2011-02-14 80 views
0

我使用hibernate 3.5.0 final与spring.In此我想保存数据到一个表中有一个复合关键从三个其他tables.I已使用hibernateTemplate.save ()。但是当我看到日志时,它清楚地显示每个插入前都有一个选择发生。我仍然无法确定原因。选择查询运行hibernateTemplate.save()

请帮忙!

映射:

<hibernate-mapping> 
    <class name="class1" table="EVENT_ASSET_DISPOSITION"> 
     <composite-id name="id" class="Idclass"> 
      <key-property name="pk1" type="java.math.BigInteger"> 
       <column name="PK_1" precision="38" scale="0" not-null="true"/> 
      </key-property> 
      <key-property name="pk2" type="long"> 
       <column name="PK_2" not-null="true" /> 
      </key-property> 
      <key-property name="pk3" type="long"> 
       <column name="PK_3" precision="38" scale="0" not-null="true"/> 
      </key-property> 
     </composite-id> 
     <property name="column1" type="java.math.BigDecimal" generated="insert"> 
      <column name="COLUMN_1" precision="38" scale="0" /> 
     </property> 
</hibernate-mapping> 

SQL: -

[STDOUT](池14线程1)插入到TABLE_1(COLUMN_1,PK_1,PK_2,PK_3)值( (pool-14-thread-1)Hibernate:从table_1中选择table1_.COLUMN_1作为COLUMN1_280_作为table1_,其中table1_.PK_1 = ?和table1_.PK_2 =?和table1_.PK_3 =?

干杯, Dwarak

+0

你能告诉你的映射和登录SQL语句? – axtavt 2011-02-14 12:34:00

+0

我已添加到问题中。评论中没有足够的空间。 – 2011-02-15 14:33:32

回答

0

该日志显示select发布于insert之后。这是因为column1被声明为generated="insert",因此Hibernate需要在insert之后获取该列的生成值。

参见: