hibernate配置:user表的主键id是bank表与wage表的外键,user.hbm.xml要怎么配置?

zaizaihai 2011-04-15 12:16:12
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.sms.po.User" table="user" catalog="sms">
<id name="id" type="java.lang.String">
<column id="id" length="50" />
<generator class="native"></generator>
</id>
<property name="pwd" type="java.lang.String">
<column name="pwd" length="50" />
</property>
<set name="banks" inverse="true" cascade="all" table="bank" lazy="true" >
<key>
<column name="id" length="50" />
</key>
<one-to-many class="com.sms.po.Bank" />
</set>
<set name="wages" inverse="true" cascade="all" table="wage" lazy="true">
<key>
<column name="id" length="50" />
</key>
<one-to-many class="com.sms.po.Wage" />
</set>
</class>
</hibernate-mapping>

如此配置访问出错

如果user表的主键id只是bank的外键,除去上述user.hbm.xml中的
<set name="wages" inverse="true" cascade="all" table="wage" lazy="true">
<key>
<column name="id" length="50" />
</key>
<one-to-many class="com.sms.po.Wage" />
</set>
就可以正常访问?
求原因、对策。。。。。。
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaizaihai 2011-04-23
  • 打赏
  • 举报
回复
解决了:当一表的中主键是其他多张表的外键时,除在主键对应的PO中定义所有外键表所对应的PO属性(Set类型) 外,该PO还要继承 Serializable。。。。
辰痕 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dearfen 的回复:]
映射没配完整就会报错
<set name="wages" inverse="true">
<key>
<column name="userId" /> // 你这一行列的应该是从表中外键字段名称
</key>
<one-to-many class="com.sms.po.Wage" />
</set>

注意:如果是要给出数据库字段名称的时候一定要注意大小写

……
[/Quote]
建议从表中的对应的外键字段的名字还是和主表的区分开,这样不容易出错。
sahala3293 2011-04-21
  • 打赏
  • 举报
回复
我们公司配置这个都不考虑表和表的关系的
DearFen 2011-04-21
  • 打赏
  • 举报
回复
映射没配完整就会报错
<set name="wages" inverse="true">
<key>
<column name="userId" /> // 你这一行列的应该是从表中外键字段名称
</key>
<one-to-many class="com.sms.po.Wage" />
</set>

注意:如果是要给出数据库字段名称的时候一定要注意大小写

建议你通过MyEclipse 反向工程自动映射出你的配置文件

67,513

社区成员

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

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