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

回到顶部