2013-11-27 14 views
0

我看到這個奇怪的控制檯輸出休眠取多了一個列,它是一個任意整數

Hibernate: 
select 
    simplematc0_.id as id1_74_0_, 
    simplematc0_.master_id as master_i2_74_0_, 
    simplematc0_.slave_code as slave_co3_74_0_, 
    simplematc0_.slave_grade as slave_gr4_74_0_ 
from 
    match_slave simplematc0_ 
where 
    simplematc0_.id=? 
10:07:38,713 TRACE BasicBinder:84 - binding parameter [1] as [BIGINT] - 68 
10:07:38,715 TRACE BasicExtractor:74 - Found [0] as column [master_i2_74_0_] 
10:07:38,715 TRACE BasicExtractor:74 - Found [test12] as column [slave_co3_74_0_] 
10:07:38,715 TRACE BasicExtractor:74 - Found [1] as column [slave_gr4_74_0_] 
10:07:38,715 TRACE BasicExtractor:74 - Found [1] as column [slave_gr4_74_0_] 
10:07:38,716 TRACE BasicExtractor:74 - Found [1937012087] as column [slave_co3_74_0_] 

我查詢了4列和Hibernate返回5列。我需要值「test12」,但它一直返回「1937012087」,這在我的任何表格中都找不到。

爲什麼Hibernate獲取這個奇怪的值?

properties.match.master.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class table="match_master" name="properties.match.SimpleMatchMaster"> 
<id name="id"> 
    <generator class="sequence"> 
     <param name="sequence"> 
      seq_matching_item_codes_pk 
     </param> 
    </generator> 
</id> 
<property name="masterCode"> 
<column name="master_code"/> 
</property> 

    <property name="masterName"> 
     <column name="MASTER_NAME"/> 
    </property> 

    <property name="masterGrade"> 
     <column name="master_grade"/> 
    </property> 

    <property name="isInUse"> 
     <column name="default_in_use_id"></column> 
    </property> 

    <many-to-one name="useStatus" class="properties.SimpleIsInUse" fetch="select" 
     insert="false" update="false" lazy="false" not-null="false" not-found="ignore"> 
     <column name="default_in_use_id"></column> 
    </many-to-one> 

    <many-to-one name="masterObject" class="foreign.Mea_class_no" 
     not-found="ignore" not-null="false" update="false" insert="false" 
     fetch="select" lazy="false" 
     > 
     <column name="master_code"></column> 
     <column name="master_grade"></column> 
    </many-to-one> 

    <set name="matchSlaves" table="jnc_match_master_slave" 
     order-by="slave_id" 
     lazy="false" fetch="select" cascade="all, delete-orphan" > 
     <key column="master_id" ></key> 
     <many-to-many class="properties.match.SimpleMatchSlave" not-found="ignore" 
      fetch="select" > 
      <column name="slave_id"></column> 
     </many-to-many> 
    </set> 

    <set name="matchHistory" table="jnc_match_history" 
     order-by="history_id" lazy="false" fetch="select" 
     cascade="all, delete-orphan, delete, persist" 
     > 
     <key> 
      <column name="master_id"></column> 
     </key> 
     <many-to-many class="properties.match.SimpleMatchHistory" 
      foreign-key="master_id" 
      > 
      <column name="history_id"></column> 
     </many-to-many> 
    </set> 



</class> 
</hibernate-mapping> 

properties.match.slave.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
<class table="match_slave" name="properties.match.SimpleMatchSlave" 

    select-before-update="true" 
    > 
<id name="id" type="long" > 
<column name="id" /> 
<generator class="sequence"> 
    <param name="sequence">seq_match_slave_pk</param> 
</generator> 
</id> 

<property name="masterId" not-null="false"> 
    <column name="master_id"></column> 
</property> 

<property name="slaveCode" not-null="false"> 
    <column name="slave_code"></column> 
</property> 

<property name="slaveGrade" not-null="false"> 
    <column name="slave_grade"></column> 
</property> 
    <many-to-one name="slaveObject" class="foreign.Mea_class_no" 
     fetch="select" 
     insert="false" update="false" lazy="false" not-found="ignore" not-null="false" 
     > 
     <column name="slave_grade"></column> 
     <column name="slave_code"></column> 
    </many-to-one> 
</class> 
</hibernate-mapping> 

回答

0

我通過改變兩個列的順序解決了它哪正在作爲一個複合外鍵工作。

之前

<many-to-one name="slaveObject" class="foreign.Mea_class_no" 
     fetch="select" 
     insert="false" update="false" lazy="false" not-found="ignore" not-null="false" 
     > 
    <column name="slave_grade"></column>   
    <column name="slave_code"></column> 

</many-to-one> 

<many-to-one name="slaveObject" class="foreign.Mea_class_no" 
    fetch="select" 
    insert="false" update="false" lazy="false" not-found="ignore" not-null="false" 
    > 
    <column name="slave_code"></column> 
    <column name="slave_grade"></column> 
</many-to-one>