现在有两张表一个用户,一个组织机构用户表有个外键关联组织机构现在添加一个用户,这个外键为空就出错的
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing:用注解怎么配置能设置这个外键为空添加进去的

解决方案 »

  1.   

    @ManyToOne(optional=false)
    public ProductType getProductType() {
    return productType;
    }
    以上面的为列:optional属性表示ProductType是否可以为空,true表示可以为null,false表示不能为空
    默认就是true,换句话说就是指产品表中的类型外键可以为null,按楼主的就是用户表中的对应的组织外键可以为null
      

  2.   

    看楼主的错误不是这个问题啊,你的问题是你保存用户的时候
    关联的组织实体必须为persistent状态也就是处于持久状态才可以,
    可以理解用户对应的这个组织实体数据库有对应的数据
      

  3.   

    就是添加的时候要设置这个组织机构要为空的,@ManyToOne(optional=false)
    这样设置也是出现错误
      

  4.   


    @ManyToOne(optional=true)
    出现这个
    org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing:
      

  5.   

    @ManyToOne(optional=true)
    @JoinColumn(name = "ENTERPRISE")
    private Enterprise enterprise;这样子的,如果有加入这个外键就可以添加的,如果为空就不能添加的
      

  6.   

    这个我也搞不明白了,按说设置了optional=true就表示可以为null,等大侠解决吧
    你查看下表结构看外键是不是可以设置为null
      

  7.   

    是空的,写sql都可以的,就是在hibernate插入的不行的,报错也是这个外键关联的
      

  8.   

    是不是你开始设置optional=false后来改成了true但是并没有删除表让它重新生成新的表
      

  9.   


    意思就是你这样的啦,设置为true,但是不知道为什么不行的
      

  10.   

    就用this.getHibernateTemplate().save()
      

  11.   

    把你java bean 中对应的XXX.hbm.xml文件中的不能为空的配置去掉
      

  12.   

    @Id
    @Column(name = "VENDER_CODE")
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; @Column(name = "MOBILE_NO")
    private String mobileNo; @ManyToOne(optional=true)
    @JoinColumn(name = "ENTERPRISE")
    private Enterprise enterprise;
    就这么配置的,但是就是不能添加的
      

  13.   

    @Id
    @Column(name = "VENDER_CODE")
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; @Column(name = "MOBILE_NO")
    private String mobileNo; @ManyToOne(optional=true)
    @JoinColumn(name = "ENTERPRISE")
    private Enterprise enterprise;
    就这么配置的,但是就是不能添加的
      

  14.   

    最好把注解写在 get 方法上面。
      

  15.   

    终于可以了,解决方法是设置了optional=true,然后在保存前,如果是空的要设置为null,vendor.setEnterprise(null);这样才能添加,不然会报错