我有一个遗留数据库,我正在使用 EJB3 对其进行建模。数据库的状态很差,我们对如何插入数据库有一些不寻常的限制。现在我想在适合数据库结构的层次结构中对数据库进行建模,但我希望能够单独手动插入每个实体,而不需要持久性管理器尝试持久化实体子项。
我正在尝试类似以下的东西(样板被遗漏):
@Entity
@Table(name = "PARENT_TABLE")
public class Parent {
@Id
@Column(name = "ID")
int id;
@OneToMany
List<Child> children;
}
@Entity
@Table(name = "CHILD_TABLE")
public class Child {
@Id
@Column(name = "ID")
int id;
}
现在这引发了一个异常:
java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST
现在我知道实体没有被标记为 PERSIST - 我不希望 EntityManager 持久化它!我希望能够先坚持父母,然后是孩子——但不是在一起。想要这样做是有充分理由的,但它似乎不想玩。