Spring Data JPA查询返回重复的行而不是实际数据,为什么?
实体类
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并不是唯一的,这就是为什么结果显示重复数据的原因。 作为唯一字段是更好的选择。
public class Event { private String name;
private String description;
@Id
private Date eventDateTime;
//getter and setter code
}
或者,我们可以使用 和 定义一个复合唯一键。
public class CompositeKey implements Serializable { private String name;
private Date eventDateTime;
}
然后,使用@IdClass(CopositeKey.class)注释 类,并使用@Id 注释 和
字段
@IdClass(CopositeKey.class) public class Event {
@Id
private String name;
private String description;
@Id
private Date eventDateTime;
//getter and setter code
}
以上是 Spring Data JPA查询返回重复的行而不是实际数据,为什么? 的全部内容, 来源链接: utcz.com/qa/423930.html