实体类
public class Event { @Id private String name; private String description; private Date eventDateTime; //getter and setter code }
服务等级
EventService { @Autowired EventRepository eventRepository; List<Event> getEvents () { List<Event> events = eventRepository.findAll(); return events; } }
对于示例数据集:事件(’add’,’‘,‘2018-01-01 00:00:10’)事件(’add’,’‘,‘2018-01-01 00:10:10’)事件(’delete’,’‘,‘2018-01-01 00:20:00’)事件(’edit’,``,‘2018-01-01 00:30:00’)
JPA findAll()查询返回重复的行:
事件(’add’,’‘,‘2018-01-01 00:00:10’)事件(’add’,’‘,‘2018-01-01 00:00:10’)事件(’add’, ‘’,‘2018-01-01 00:00:10’)事件(’add’,’‘,‘2018-01-01 00:00:10’)
为了避免重复(重复)数据,我们必须确保有一个唯一的键,并且该键将由@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)注释 事件 类,并使用@Id 注释 name 和 eventDateTime 字段
@IdClass(CopositeKey.class) public class Event { @Id private String name; private String description; @Id private Date eventDateTime; //getter and setter code }