2 回答
TA贡献1811条经验 获得超4个赞
为了避免重复(重复)数据,我们必须确保有一个唯一的键,并且将由@Id 注释。在此示例中,将其命名为 self 不是唯一的,这就是结果显示重复数据的原因。eventDateTime作为唯一字段是更好的选择。
public class Event {
private String name;
private String description;
@Id
private Date eventDateTime;
//getter and setter code
}
或者,我们可以使用name和eventDateTime定义一个复合唯一键。
public class CompositeKey implements Serializable {
private String name;
private Date eventDateTime;
}
然后,使用 @IdClass(CopositeKey.class) 和名称和eventDateTime字段使用 @Id注释事件类
@IdClass(CopositeKey.class)
public class Event {
@Id
private String name;
private String description;
@Id
private Date eventDateTime;
//getter and setter code
}
TA贡献1851条经验 获得超3个赞
您的name
-column 是实体 ( @Id
) 的标识符,但您的 sample-data 包含data
两次 String。
标识符必须是唯一的,如果您手动分配它们(即不使用生成的标识符),则应用程序有责任保持它们的唯一性。
如果不是奇怪的行为可能会发生。
因此,您应该修复您的示例数据或使用另一列(带有生成的值)作为实体的标识符。
添加回答
举报