【发布时间】:2015-02-06 12:53:17
【问题描述】:
我正在使用带有 objectify 4.0.1 的 google 数据存储来存储消息。每条消息都附有评论列表。
消息 ID 5708313257836544 有 16 个 cmets。在 10:34:08 添加了第 17 条评论。 12:01:46 的 GET 显示该消息有 17 个 cmets,另一个在 12:02 显示它有 16 个,随后在 12:04 再次返回 17。没有删除任何 cmets。
代码如下:
@Entity
public class Message {
@Id private Long id;
private List<Comment> comments;
//getters and setters
//equals and hashcode over-ridden using id
}
@Embed
public class Comment {
private String message;
private Date date;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getDate() {
return date;
}
public int hashCode() {
return date.hashCode() * message.hashCode();
}
public boolean equals(Object obj) {
if (obj==this)
return true;
if ( !(obj instanceof Comment) )
return false;
Comment other = (Comment) obj;
return other.getMessage().equals(message) && other.getDate().equals(date);
}
我没有使用@Cache 注释为这些对象启用缓存。
为什么会发生这种不一致,我该如何预防?
【问题讨论】:
-
你还没有展示任何获取这个的代码。如果您的获取代码是一个查询,它将显示最终的一致性。如果它是按键获取的,那么您会看到其他内容 - 也许您没有安装 ObjectifyFilter?
标签: java google-app-engine objectify