Hibernate一方对多方非主键的关联
Posted xanlv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate一方对多方非主键的关联相关的知识,希望对你有一定的参考价值。
CREATE TABLE users(
id VARCHAR(32) PRIMARY KEY,
NAME VARCHAR(50),
PASSWORD VARCHAR(32),
phone VARCHAR(50),
email VARCHAR(50)
);
CREATE TABLE address(
id VARCHAR(32) PRIMARY KEY,
NAME VARCHAR(50),
phone VARCHAR(50),
zip VARCHAR(50),
dft CHAR(1) default ‘0’,
userid VARCHAR(32),
mktime varchar(19),
CONSTRAINT addr_fk1 FOREIGN KEY(userid) REFERENCES users(id)
);
一方:users的id 关联 多方:address的userid
只要配置一方的set就可以了。
<?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">
<hibernate-mapping package="cn.hncu.itcast.domain">
<class name="User" table="users" catalog="bookstore">
<id name="id" type="java.lang.String">
<column name="id" length="32"></column>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50"></column>
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="32"></column>
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="50"></column>
</property>
<property name="email" type="java.lang.String">
<column name="email" length="50"></column>
</property>
<set name="addrs" table="address" inverse="true" cascade="all">
<key column="userid" foreign-key="userid"></key>
<one-to-many class="cn.hncu.itcast.domain.Address"></one-to-many>
</set>
</class>
<class name="Address" table="address" catalog="bookstore" >
<id name="id" type="java.lang.String">
<column name="id" length="32"></column>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50"></column>
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="50"></column>
</property>
<property name="zip" type="java.lang.String">
<column name="zip" length="50"></column>
</property>
<property name="dft" type="java.lang.String">
<column name="dft" length="1"></column>
</property>
<property name="userid" type="java.lang.String">
<column name="userid" length="32"></column>
</property>
<property name="mktime" type="java.lang.String">
<column name="mktime" length="19"></column>
</property>
</class>
</hibernate-mapping>
测试结果
以上是关于Hibernate一方对多方非主键的关联的主要内容,如果未能解决你的问题,请参考以下文章
dljd_(057-058)_hibernate_关联关系映射-什么是关联关系
hibernate一对多,更新一方时多方的外键ID更新为null