有两个双向双联的表,一个是1,另一个是0或1.我把它们配置成了one-to-one的关系。
第一个的hbm文件:
<hibernate-mapping>
<class name="com.hibe.demo.ClientTradeSI" table="ClientTradeSI">
   <id name="siRefNo" type="java.lang.Integer">
    <column name="siRefNo" precision="22" scale="0" />
     <generator class="sequence">
     <param name="sequence">ClientTradeSI_seq</param>
     </generator>
   </id>
   <property name="siState"></property>
   <property name="tradeCcy" ></property>
   <one-to-one name="clientTrade" class="com.hibe.demo.ClientTrade" cascade="all"  property-ref="clientTradeSI"></one-to-one>
</class>
</hibernate-mapping> 第二个Hbm文件:
<hibernate-mapping>
<class name="com.hibe.demo.ClientTrade" table="ClientTrade">
   <id name="tradeRefNo" type="java.lang.Integer">
    <column name="tradeRefNo" precision="22" scale="0" />
     <generator class="sequence">
     <param name="sequence">ClientTrade_seq</param>
     </generator>
   </id>
   <property name="etId"></property>
   <property name="averagePrice" ></property>
   <many-to-one not-null="true" name="clientTradeSI" class="com.hibe.demo.ClientTradeSI" column="siRefNo" cascade="all" 
   unique="true">
   </many-to-one>
</class>
</hibernate-mapping>我现在想单独保存一个ClientTrade,因为它必须要有一个ClientTradeSI相对应,我就从数据库里查出来付给它。
测试代码如下:
ClientTrade clientTrade=new ClientTrade();
clientTrade.setAveragePrice(3232);
clientTrade.setMarketId(23);
ClientTradeSI ctSi=(ClientTradeSI)session.get(ClientTradeSI.class, new Integer(1)); ctSi.setClientTrade(clientTrade);
clientTrade.setClientTradeSI(ctSi); session.save(clientTrade);
执行后报“违反唯一约束条件”的错误,因为把它的父类当新的记录去保存了。我想要的结果是:如果数据库里没有这条父类记录才级联把它保存到数据库,否则就不用。这要怎么做啊??