Hibernate复合主键做外键时候的问题

chb_2000_0 2008-01-10 10:13:33
碰到一个奇怪的问题 我的表映射如下:两个标是一对一的关系!主key也一样!
表一:
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin 2.1

http://boss.bekk.no/boss/middlegen/
http://www.hibernate.org/
-->

<class
name="jp.co.yamaha_motor.ygls.common.entity.MsSerial"
table="MS_SERIAL"
>

<composite-id name="comp_id" class="jp.co.yamaha_motor.ygls.common.entity.MsSerialPK">
<key-property
name="modelCd"
column="MODEL_CD"
type="java.lang.String"
length="6"
/>
<key-property
name="serialNo"
column="SERIAL_NO"
type="java.lang.String"
length="12"
/>
</composite-id>

<property
name="specCd"
type="java.lang.String"
column="SPEC_CD"
not-null="true"
length="4"
/>
<property
name="stmpModelCd"
type="java.lang.String"
column="STMP_MODEL_CD"
length="5"
/>
<property
name="caseNo"
type="java.lang.String"
column="CASE_NO"
length="10"
/>
<property
name="advNo"
type="java.lang.String"
column="ADV_NO"
length="8"
/>
<property
name="inspectDate"
type="java.lang.String"
column="INSPECT_DATE"
length="8"
/>
<property
name="addYh"
type="java.sql.Date"
column="ADD_YH"
/>
<property
name="addUserId"
type="java.lang.String"
column="ADD_USER_ID"
length="10"
/>
<property
name="updYh"
type="java.sql.Date"
column="UPD_YH"
/>
<property
name="updUserId"
type="java.lang.String"
column="UPD_USER_ID"
length="10"
/>

<!-- Associations -->
<!-- derived association(s) for compound key -->
<!-- end of derived association(s) -->

<!-- bi-directional one-to-one association to StkSerial -->
<one-to-one
name="stkSerial"
class="jp.co.yamaha_motor.ygls.common.entity.StkSerial"
outer-join="auto"
/>
<!-- bi-directional one-to-many association to SerialHis -->
<set
name="serialHis"
lazy="true"
inverse="true"
cascade="all"
>
<key>
<column name="MODEL_CD" />
<column name="SERIAL_NO" />
</key>
<one-to-many
class="jp.co.yamaha_motor.ygls.common.entity.SerialHis"
/>
</set>
<!-- bi-directional one-to-many association to TrnAdvDt -->
<set
name="trnAdvDts"
lazy="true"
inverse="true"
cascade="all"
>
<key>
<column name="MODEL_CD" />
<column name="SERIAL_NO" />
</key>
<one-to-many
class="jp.co.yamaha_motor.ygls.common.entity.TrnAdvDt"
/>
</set>
<!-- bi-directional many-to-one association to MsPackType -->
<many-to-one
name="msPackType"
class="jp.co.yamaha_motor.ygls.common.entity.MsPackType"
not-null="true"
>
<column name="PACK_TYPE_CD" />
</many-to-one>
<!-- bi-directional many-to-one association to MsUnitType -->
<many-to-one
name="msUnitType"
class="jp.co.yamaha_motor.ygls.common.entity.MsUnitType"
not-null="true"
>
<column name="UNIT_TYPE_CD" />
</many-to-one>

</class>
</hibernate-mapping>
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
表二:
<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin 2.1

http://boss.bekk.no/boss/middlegen/
http://www.hibernate.org/
-->

<class
name="jp.co.yamaha_motor.ygls.common.entity.StkSerial"
table="STK_SERIAL"
>

<composite-id name="comp_id" class="jp.co.yamaha_motor.ygls.common.entity.StkSerialPK">
<key-property
name="modelCd"
column="MODEL_CD"
type="java.lang.String"
length="6"
/>
<key-property
name="serialNo"
column="SERIAL_NO"
type="java.lang.String"
length="12"
/>
</composite-id>

<property
name="seqNo"
type="java.lang.String"
column="SEQ_NO"
not-null="true"
length="3"
/>
<property
name="stkDate"
type="java.lang.String"
column="STK_DATE"
length="8"
/>
<property
name="statusHisSeqNo"
type="java.lang.String"
column="STATUS_HIS_SEQ_NO"
length="3"
/>
<property
name="addYh"
type="java.sql.Date"
column="ADD_YH"
/>
<property
name="addUserId"
type="java.lang.String"
column="ADD_USER_ID"
length="10"
/>
<property
name="updYh"
type="java.sql.Date"
column="UPD_YH"
/>
<property
name="updUserId"
type="java.lang.String"
column="UPD_USER_ID"
length="10"
/>

<!-- Associations -->
<!-- derived association(s) for compound key -->
<!-- end of derived association(s) -->

<!-- bi-directional one-to-one association to MsSerial -->
<one-to-one
name="msSerial"
class="jp.co.yamaha_motor.ygls.common.entity.MsSerial"
outer-join="auto"
constrained="true"
/>
<!-- bi-directional many-to-one association to MsStkPoint -->
<many-to-one
name="msStkPoint"
class="jp.co.yamaha_motor.ygls.common.entity.MsStkPoint"
not-null="true"
>
<column name="STK_POINT_CD" />
</many-to-one>
<!-- bi-directional many-to-one association to MsSite -->
<many-to-one
name="msSite"
class="jp.co.yamaha_motor.ygls.common.entity.MsSite"
not-null="true"
>
<column name="SITE_CD" />
</many-to-one>
<!-- bi-directional many-to-one association to MsPdStkStatus -->
<many-to-one
name="msPdStkStatus"
class="jp.co.yamaha_motor.ygls.common.entity.MsPdStkStatus"
not-null="true"
>
<column name="PD_STK_STATUS_CD" />
</many-to-one>
<!-- bi-directional many-to-one association to MsStkCondition -->
<many-to-one
name="msStkCondition"
class="jp.co.yamaha_motor.ygls.common.entity.MsStkCondition"
not-null="true"
>
<column name="STK_COND_CD" />
</many-to-one>
<!-- bi-directional many-to-one association to MsWhLocation -->
<many-to-one
name="msWhLocation"
class="jp.co.yamaha_motor.ygls.common.entity.MsWhLocation"
not-null="true"
>
<column name="STK_CTL_WH_CD" />
<column name="LOC_NO" />
</many-to-one>
<!-- bi-directional many-to-one association to MsCompany -->
<many-to-one
name="msCompany"
class="jp.co.yamaha_motor.ygls.common.entity.MsCompany"
not-null="true"
>
<column name="OWNERSHIP_CD" />
</many-to-one>

</class>
</hibernate-mapping>
用主键做表一检索时候出现很奇怪的问题(PK的类也有生成equals等方法)
如果数据不存在时候不会出错,数据存在时候就会出现如下错误。
org.springframework.orm.hibernate3.HibernateSystemException: Provided id of the wrong type. Expected: class jp.co.yamaha_motor.ygls.common.entity.StkSerialPK, got class jp.co.yamaha_motor.ygls.common.entity.MsSerialPK;
...全文
820 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyflkyz 2010-05-06
  • 打赏
  • 举报
回复
JAVA高级研讨中心,里面高手很多噢。不妨来此试试解决。112166248(JAVA、PHP交流中心)
chb_2000_0 2008-01-25
  • 打赏
  • 举报
回复
呵呵,自己解决了,两个外key定义都相同,要去掉一个:)
hahe7788 2008-01-12
  • 打赏
  • 举报
回复
按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620
在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧