我的问题是保留两个具有 1:n 关系的类:
public class DayRecord {
private Long id;
private List<TimeRecord> timeRecordsToday = new ArrayList<TimeRecord>(4);
...
}
public class TimeRecord {
private Long id;
...
}
因此,在代码中,DayRecord 知道 TimeRecord。
create table DAY_RECORDS (
id int primary key,
);
create table TIME_RECORDS (
id int primary key,
day_record_id int not null,
foreign key (day_record_id) references DAY_RECORDS (id)
);
在数据库中,TimeRecord 知道 DayRecord。
我可以一步保存包含所有 TimeRecord 的 DayRecord 吗?
在 Hibernate 中,我可以设置一个逆映射并只保存一个 DayRecord,它的所有 TimeRecords 也会被保存。使用 MyBatis,我尝试将这些类彼此独立地保存:
<mapper
namespace="de.stevenschwenke.java.javafx.xyz.DayRecordMapper">
<insert id="insertDayRecord"
parameterType="de.stevenschwenke.java.javafx.xyz.DayRecord">
insert into DAY_RECORDS (id) values (NEXT VALUE FOR DAY_RECORDS_SEQ);
</insert>
</mapper>
<mapper
namespace="de.stevenschwenke.java.javafx.xyz.TimeRecordMapper">
<insert id="insertTimeRecord"
parameterType="de.stevenschwenke.java.javafx.xyz.TimeRecord">
insert into TIME_RECORDS (id) values (NEXT VALUE FOR TIME_RECORDS_SEQ);
</insert>
</mapper>
但是如何将 DayRecord-ID 保存在 TimeRecord 中?
想法:
- 给 TimeRecord 一个属性 dayRecordId。这样,将创建一个循环依赖项。但是,映射会在保存时处理相关性。
- 在一个事务中,首先保存 DayRecord,获取其 ID,将其设置在 TimeRecords 中并保存此对象。
- 在插入中使用嵌套的选择语句,就像在文档中一样
保存这两个对象的最佳方法是什么?谢谢你的帮助!