我正在尝试保存嵌套对象,而不是那些嵌套对象,我不想保存一个对象。我怎样才能实现这一目标? 当我运行这个时,我得到了暂时的异常
org.hibernate.TransientObjectException: object references an unsaved transient instance.
我知道我正在做一些愚蠢的事情,这是hibernate不推荐的。
场景:
A, B, C, D are four different tables.
Table A ( field1, field2 , field3[fk to table B])
Table B ( field3, field4 , field5 [fk to table C])
Table C ( field5, field7 , field8)
Table D ( field6, field9 , field3[fk to table B])
物件
A
private String field1;
private String field2;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="field3")
private B b;
B
private String field3;
private String field4;
//Want to save D
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="field3")
private List<D> d; // This is a list of D
//Dont want to save C
@OneToOne
@JoinColumn(name="field5")
private C c;
C
private String field5;
private String field7;
private String field8;
D
private String field6;
private String field9;
private String field3;
答案 0 :(得分:0)
我不清楚你为什么要这样做,但我认为可以做到。
与大多数框架一样,当您遵循hibernate旨在支持的模式时,hibernate非常棒。当你尝试做一些“奇怪的事情”时,事情会变得令人毛骨悚然和痛苦。
答案 1 :(得分:0)
时抛出异常
&#34;将瞬态实例传递给期望a的Session方法 持久性实例&#34;。
烘焙瞬态实例确保在将该瞬态实例传递给save方法之前已加载了引用。如果您没有持久性引用,则首先保存不会引用其他瞬态实例的对象。