gpt4 book ai didi

java - 尝试在数据库中保存新实体,但生成的 ID 为空

转载 作者:行者123 更新时间:2023-12-01 11:27:52 26 4
gpt4 key购买 nike

我有一个对象“Event”和一个对象 eventDetails。两者都是 jpa 实体。Event 对象通过 @OneToOne 注释包含 eventDetails。

我的数据库有很多事件。但每个事件的eventdetails都是空的。

在我的 RestController 中,我尝试填充事件详细信息,如下所示:

@RequestMapping(value = "/event/{eventId}/confirm", method = RequestMethod.PUT)
public ResponseEntity<Void> confirmEvent(
@PathVariable("eventId") long eventId,
@RequestBody(required = true) @Valid EventDetails data) {

EventEntity event = eventRepository.findOne(eventId);
if (event == null || event.getStatus().equals(EventStatus.BLOCKED)) {
return ResponseEntity.badRequest().build();
} else {
event.setStatus(EventStatus.BLOCKED);
EventDetails eventDetails = new EventDetails();
eventDetails.setSalutation(data.getSalutation());
//... all details here
event.setDetails(eventDetails);
eventRepository.save(event);
return ResponseEntity.ok().build();
}
}

但我无法将此详细信息对象存储在数据库中。在调试器中我可以看到数据和事件的id为空。所以不可能存储它。但我不知道为什么它是空的。因为我的EventDetails-Entity有以下Getter。

@Override
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EVENT_DETAILS_SEQ_PK")
@SequenceGenerator(name = "EVENT_DETAILS_SEQ_PK")
public Long getId() {
return super.getId();
}

感谢您的回答。

最佳答案

从代码片段来看,您似乎只保存了事件,在这种情况下,您必须至少在 EventEntityEventDetails 之间的关系上保留级联类型( @OneToOne(cascade = CascadeType.PERSIST)

关于java - 尝试在数据库中保存新实体,但生成的 ID 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666547/

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