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

hibernate_关联映射_一对多

外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl

hibernate基础10:关联映射之基于主键的双向一对一

hibernate基础10:关联映射之基于主键的双向一对一