gpt4 book ai didi

java - Spring Data JPA 查询返回重复行而不是实际数据,为什么?

转载 作者:行者123 更新时间:2023-12-02 06:01:58 25 4
gpt4 key购买 nike

实体类

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;
}
}

对于示例数据集:事件('添加', '', '2018-01-01 00:00:10')事件 ('添加', '', '2018-01-01 00:10:10')事件('删除','','2018-01-01 00:20:00')事件('编辑', '', '2018-01-01 00:30:00')

JPA findAll() 查询返回重复行:

事件('添加', '', '2018-01-01 00:00:10')事件('添加', '', '2018-01-01 00:00:10')事件('添加', '', '2018-01-01 00:00:10')事件('添加','','2018-01-01 00:00:10')

最佳答案

为了避免重复(重复)数据,我们必须确保有一个唯一的键,并且将用@Id注释。在此示例中,名称本身并不唯一,这就是结果显示重复数据的原因。 eventDateTime 作为唯一字段是更好的选择。

public class Event {

private String name;

private String description;

@Id
private Date eventDateTime;

//getter and setter code
}

或者,我们可以使用 nameeventDateTime 定义一个复合唯一键。

public class CompositeKey implements Serializable { 

private String name;

private Date eventDateTime;
}

然后,使用@IdClass(CopositeKey.class)注释Event类,并使用@Id注释nameeventDateTime字段

 @IdClass(CopositeKey.class)
public class Event {
@Id
private String name;

private String description;

@Id
private Date eventDateTime;

//getter and setter code
}

关于java - Spring Data JPA 查询返回重复行而不是实际数据,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com