我有以下实体: MissionInfo:
@Entity
@Table(name = "mission_info")
public class MissionInfo implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue
private Long id;
@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name="mission_info_id")
private List<Mission> missions;
public MissionInfo() {
}
// getters and setters
}
使命:
@Entity
@Table(name = "mission")
public class Mission implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue
private Long id;
@Column(name = "mission_info_id")
private Long missionInfoId;
@ManyToOne
@JoinColumn(name="mission_info_id", insertable=false, updatable=false)
private MissionInfo missionInfo;
public Mission() {
}
// getters and setters
}
正如我在这个计划所有者方面的理解 - MissionInfo
我使用以下代码进行保存: MissionInfo info = new MissionInfo();
Mission o = new Mission();
List<Mission> list = new ArrayList<Mission>();
list.add(o);
info.setMissions(list);
MissionInfo createdMissionInfo = missionInfoRepository.save(info);
MissionInfo mi = createdMissionInfo.getMissions().get(0).getMissionInfo(); <-- NULL
Long mId = createdMissionInfo.getMissions().get(0).getMissionInfoId(); <-- NULL
正确保存对象树,createdMissionInfo 有一个任务列表。但是在保存单个任务对象(createdMissionInfo.getMissions().get(0))后,missionInfoId 和missionInfo 中有NULL。
是否可以调整保存后将具有实际值的 jpa/hibernate 实体?像这样:
// should be a pointer to saved mission info
createdMissionInfo.getMissions().get(0).getMissionInfo();
// should be a id of saved mission info
createdMissionInfo.getMissions().get(0).getMissionInfoId();
谢谢!
更新:
我根据 kostja 评论更正实体:
@Entity
@Table(name = "mission_info")
public class MissionInfo implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "missionInfo", cascade=CascadeType.ALL)
private List<Mission> missions;
}
@Entity
@Table(name = "mission")
public class Mission implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue
private Long id;
@ManyToOne
@JoinColumn(name="mission_info_id")
private MissionInfo missionInfo;
}
但是当我使用此代码保存时:
MissionInfo info = new MissionInfo();
Mission o = new Mission();
List<Mission> list = new ArrayList<Mission>();
list.add(o);
info.setMissions(list);
MissionInfo createdMissionInfo = missionInfoRepository.save(info);
sql 外键 'mission_info_id' 为 NULL。我的主要问题没有解决:
MissionInfo mi = createdMissionInfo.getMissions().get(0).getMissionInfo(); <-- NULL