首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate 之外键关联

2012-12-22 
Hibernate 以外键关联以学生(STUDENT)和身份证(CARD)为例子:建表语句:Student:SET FOREIGN_KEY_CHECKS0-

Hibernate 以外键关联

以学生(STUDENT)和身份证(CARD)为例子:

建表语句:

Student:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
? `ID` int(11) NOT NULL auto_increment,
? `Name` varchar(255) default NULL,
? `TeamID` int(11) default NULL,
? PRIMARY KEY? (`ID`),
? KEY `F_Team` (`TeamID`),
? CONSTRAINT `F_Team` FOREIGN KEY (`TeamID`) REFERENCES `team` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=gbk;

?

Card:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for card
-- ----------------------------
DROP TABLE IF EXISTS `card`;
CREATE TABLE `card` (
? `ID` int(11) NOT NULL auto_increment,
? `Name` varchar(255) default NULL,
? `StudentID` int(11) default NULL,
? PRIMARY KEY? (`ID`),
? KEY `F_Student` (`StudentID`),
? CONSTRAINT `F_Student` FOREIGN KEY (`StudentID`) REFERENCES `student` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=gbk;

配置文件:

Student.hbm.xml

?

<?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.vo.Student" table="student" catalog="test" batch-size="3">
??????? <id name="id" type="java.lang.Integer">
??????????? <column name="ID" />
??????????? <generator >
??????????? </generator>
??????? </id>
??????? <property name="name" type="java.lang.String">
??????????? <column name="Name" />
??????? </property>
?????????????? <one-to-one name="cardID" cascade="all" fetch="join"></one-to-one>
??? </class>
</hibernate-mapping>

Card.hbm.xml

<?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.vo.Card" table="card" catalog="test">
??????? <id name="id" type="java.lang.Integer">
??????????? <column name="ID" />
??????????? <generator />
??????? </id>
??????? <property name="name" type="java.lang.String">
??????????? <column name="Name" />
??????? </property>
??????? <many-to-one name="student" column="StudentID" cascade="all"? constrained="true"></one-to-one>

2.

加上lazy=true,lazy=proxy

card.hbm.xml

<class name="com.vo.Card" table="card" catalog="test" lazy="true">

?

?<many-to-one name="student" column="StudentID" lazy="proxy"></many-to-one>

?

重新运行代码打印:

Hibernate: select student0_.ID as ID1_0_, student0_.Name as Name1_0_ from test.student student0_ where student0_.ID=?