Hibernate多外键问题

[b]hibernate 多个外键配置[/b]

近来做的一个项目中用到了一个表出现了多个外键,本想在hbm.xml文件中配置多个<many-to-one>问题就可以解决了,没想到不行。网上search了一个晚上,终于有了一点灵感。

CREATE TABLE `work` (
`Id` int(11) NOT NULL auto_increment,
`work_type` int(11) default NULL, --著作类型
`author_type` int(11) default NULL, --作者排序
`subject_type` int(11) default NULL, --学科分类
PRIMARY KEY (`Id`),
) ;

--字段对应表
CREATE TABLE `work_field` (
`Id` int(11) NOT NULL auto_increment, --编号
`field_name` varchar(255) default NULL, --代表的意义
PRIMARY KEY (`Id`)
) ;

下面是domain类以及相应的配置文件

//著作类
public class Work implements java.io.Serializable {

private Integer id; //自增主键

private WorkField workFieldBySubjectType; //著作类型

private WorkField workFieldByAuthorType; //作者排序

private WorkField workFieldByWorkType; //学科分类

//其它为getter和setter方法
}

//字段对应类
public class WorkField implements java.io.Serializable {

private Integer id; //编号

private String fieldName; //代表的意义

private Set worksForSubjectType = new HashSet(0);

private Set worksForWorkType = new HashSet(0);

private Set worksForAuthorType = new HashSet(0);

//其它为getter和setter方法

}

这是Work.hbm.xml中的配置文件
<hibernate-mapping>
<class name="com.oristand.demo.Work" table="work" catalog="hibernate">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity"></generator>
</id>
<many-to-one name="workFieldBySubjectType" class="com.oristand.demo.WorkField" fetch="select">
<column name="subject_type" />
</many-to-one>
<many-to-one name="workFieldByAuthorType" class="com.oristand.demo.WorkField" fetch="select">
<column name="author_type" />
</many-to-one>
<many-to-one name="workFieldByWorkType" class="com.oristand.demo.WorkField" fetch="select">
<column name="work_type" />
</many-to-one>
<property name="remark" type="java.lang.String">
<column name="remark" />
</property>
</class>
</hibernate-mapping>

这是WorkField.hbm.xml中的配置文件
<hibernate-mapping>
<class name="com.oristand.demo.WorkField" table="work_field" catalog="hibernate">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity"></generator>
</id>
<property name="fieldName" type="java.lang.String">
<column name="field_name" />
</property>
<set name="worksForSubjectType" inverse="true">
<key>
<column name="subject_type" />
</key>
<one-to-many class="com.oristand.demo.Work" />
</set>
<set name="worksForWorkType" inverse="true">
<key>
<column name="work_type" />
</key>
<one-to-many class="com.oristand.demo.Work" />
</set>
<set name="worksForAuthorType" inverse="true">
<key>
<column name="author_type" />
</key>
<one-to-many class="com.oristand.demo.Work" />
</set>
</class>
</hibernate-mapping>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值