//将新插入的从表t_inquiringDetails的主键id设为null,如果不做这一步的操作,从表的id=""
if ("".equals(inquiringDetails.getId())) {
   //在这里打印该对象。看看他的关联id (inquiringId) 是什么?
   //
inquiringDetails.setId(null);
}

解决方案 »

  1.   

    新添加的inquiringDetails的id为"",所以我才把它设为null,这样hibernate才能知道这条数据是新添加的,已有的inquiringDetails的id就是以前的值。
      

  2.   

    对不起,刚才没看清,inquiringId的id的确就是我要更新的主表inquiring的id值。
      

  3.   

    你手动的把要新增的记录TInquiringDetails.id 的这个值给一个值试试看。我觉得可能是数据库没有自动的赋予id 一个值
      

  4.   

    是因为hibernate没有识别我新添加的TInquiringDetails对象是临时的还是托管的吗?unsave-value没有起到作用?还是还需要配置别的,例如version?
      

  5.   

    这个具体你还得自己多试试看了。
    先看看把id给一个值试试看。但是我看你的报错信息应该是外键冲突。如果是因为id为null报错信息不应该是这样的。我觉得。既然insert语句已经被生成了。说明hibernate已经识别出该对象是要新增的。而且也已经执行了该操作。与version等应该无关。看你的配置我觉得应该也没什么问题。还是先看看你id 是不是有问题把
    具体我也不太清楚。
      

  6.   

    <many-to-one name="TInquiring" class="com.proeric.dao.inquiring.TInquiring" fetch="join" lazy="true">  我觉得应该把 cascade 放在这个地方。 不应该让一做为主控方。
      

  7.   

    你用的是什么hibernate3.jar的包吗?换一个hibernate3.1的试试