我看到这个奇怪的控制台输出
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 :(得分: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>