Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠嵌套对象_Java_Hibernate_Exception_Persistence - Fatal编程技术网

Java 休眠嵌套对象

Java 休眠嵌套对象,java,hibernate,exception,persistence,Java,Hibernate,Exception,Persistence,我正在尝试保存嵌套对象,在这些嵌套对象中,我不想保存一个对象。我怎样才能做到这一点? 当我运行这个程序时,我得到了一个暂时的异常 org.hibernate.TransientObjectException: object references an unsaved transient instance. 我知道我在做一些hibernate不推荐的蠢事 情景: A, B, C, D are four different tables. Table A ( field1, field2 ,

我正在尝试保存嵌套对象,在这些嵌套对象中,我不想保存一个对象。我怎样才能做到这一点? 当我运行这个程序时,我得到了一个暂时的异常

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

B

D


我不清楚你为什么要这样做,但我认为这是可以做到的

  • 使实体图处于希望持久化的状态。这可能意味着将不希望保存的字段设置为空(临时)
  • 保存/保存
  • 恢复为空的值。如果您在事务中,您可能希望在恢复不希望持久化的值之前分离实体

  • 与大多数框架一样,当您遵循hibernate设计支持的模式时,hibernate非常棒。当你尝试做一些“怪异”的事情时,事情可能会变得令人毛骨悚然和痛苦。

    当你

    “将临时实例传递给期望 持久实例”


    烘焙瞬态实例确保在将该瞬态实例传递给save方法之前已加载引用。如果没有持久引用,则首先保存没有引用到其他瞬态实例的对象

    保存对象的代码?因为表B中的字段5可以为空,而C是一个静态表。我尝试将C赋值为NULL,如果我将C设置为NULL,它将开始查找C。
    private String field1;   
    private String field2;  
    @OneToOne(cascade=CascadeType.ALL)  
    @JoinColumn(name="field3")  
    private 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;  
    
    private String field5;  
    private String field7;     
    private String field8;  
    
    private String field6;  
    private String field9;     
    private String field3;