Hibernate 一对一共享主键关联的例子
2012-08-13 15:19
281 查看
一 表结构:
Sql代码
CREATE TABLE `user` (
`userid` int(11) NOT NULL auto_increment,
`username` varchar(255) NOT NULL default '',
`age` int(2) default NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
CREATE TABLE `address` (
`aid` int(11) NOT NULL default '0',
`address` varchar(255) NOT NULL default '',
PRIMARY KEY (`aid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
二 POJO与映射文件:
Java代码
public clas User {
private Integer userid;
private String username;
private Integer age;
private Address address;
//getters setters method...
}
public class Address {
private Integer aid;
private String address;
private User user;
//getters setters method...
}
Java代码
User.hbm.xml
<hibernate-mapping>
<class name="com.pojo.User" table="user" dynamic-insert="true"
dynamic-update="true">
<id name="userid" type="integer">
<column name="userid" sql-type="int" length="11"></column>
<generator class="native"></generator>
</id>
<property name="username" type="string">
<column name="username" sql-type="varchar" length="255"
not-null="true">
</column>
</property>
<property name="age" type="integer">
<column name="age" sql-type="int" length="2"></column>
</property>
<strong><one-to-one name="address" class="com.pojo.Address"
cascade="all">
</one-to-one></strong>
</class>
</hibernate-mapping>
Java代码
Address.hbm.xml
<hibernate-mapping>
<class name="com.pojo.Address" table="address" dynamic-insert="true" dynamic-update="true">
<id name="aid" type="integer">
<column name="aid" sql-type="int" length="11"></column>
<strong><generator class="foreign">
<param name="property">user</param>
</generator></strong>
</id>
<property name="address" type="string">
<column name="address" sql-type="varchar" length="255"></column>
</property>
<strong><one-to-one name="user" class="com.pojo.User"
constrained="true" cascade="all">
</one-to-one></strong>
</class>
</hibernate-mapping>
Sql代码
CREATE TABLE `user` (
`userid` int(11) NOT NULL auto_increment,
`username` varchar(255) NOT NULL default '',
`age` int(2) default NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
CREATE TABLE `address` (
`aid` int(11) NOT NULL default '0',
`address` varchar(255) NOT NULL default '',
PRIMARY KEY (`aid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
CREATE TABLE `user` ( `userid` int(11) NOT NULL auto_increment, `username` varchar(255) NOT NULL default '', `age` int(2) default NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; CREATE TABLE `address` ( `aid` int(11) NOT NULL default '0', `address` varchar(255) NOT NULL default '', PRIMARY KEY (`aid`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
二 POJO与映射文件:
Java代码
public clas User {
private Integer userid;
private String username;
private Integer age;
private Address address;
//getters setters method...
}
public class Address {
private Integer aid;
private String address;
private User user;
//getters setters method...
}
public class User { private Integer userid; private String username; private Integer age; private Address address; //getters setters method... } public class Address { private Integer aid; private String address; private User user; //getters setters method... }
Java代码
User.hbm.xml
<hibernate-mapping>
<class name="com.pojo.User" table="user" dynamic-insert="true"
dynamic-update="true">
<id name="userid" type="integer">
<column name="userid" sql-type="int" length="11"></column>
<generator class="native"></generator>
</id>
<property name="username" type="string">
<column name="username" sql-type="varchar" length="255"
not-null="true">
</column>
</property>
<property name="age" type="integer">
<column name="age" sql-type="int" length="2"></column>
</property>
<strong><one-to-one name="address" class="com.pojo.Address"
cascade="all">
</one-to-one></strong>
</class>
</hibernate-mapping>
User.hbm.xml <hibernate-mapping> <class name="com.pojo.User" table="user" dynamic-insert="true" dynamic-update="true"> <id name="userid" type="integer"> <column name="userid" sql-type="int" length="11"></column> <generator class="native"></generator> </id> <property name="username" type="string"> <column name="username" sql-type="varchar" length="255" not-null="true"> </column> </property> <property name="age" type="integer"> <column name="age" sql-type="int" length="2"></column> </property> <one-to-one name="address" class="com.pojo.Address" cascade="all"> </one-to-one> </class> </hibernate-mapping>
Java代码
Address.hbm.xml
<hibernate-mapping>
<class name="com.pojo.Address" table="address" dynamic-insert="true" dynamic-update="true">
<id name="aid" type="integer">
<column name="aid" sql-type="int" length="11"></column>
<strong><generator class="foreign">
<param name="property">user</param>
</generator></strong>
</id>
<property name="address" type="string">
<column name="address" sql-type="varchar" length="255"></column>
</property>
<strong><one-to-one name="user" class="com.pojo.User"
constrained="true" cascade="all">
</one-to-one></strong>
</class>
</hibernate-mapping>
相关文章推荐
- Hibernate一对一关联(共享主键) 注解 || xml
- Hibernate一对一关联(共享主键)
- Hibernate 第十讲 表关联关系(三)单向项一对一主键关联
- Hibernate 第十讲 表关联关系(五)一对一联合主键关联
- Hibernate之对象关系映射05一对一双向主键关联
- hibernate 关联关系 一对一 主键关联
- Hibernate:一对一单向主键关联
- Hibernate关联关系之一对一(主键关联)
- hibernate 映射<二>一对一主键关联
- hibernate一对一主键关联映射双向
- Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)
- Hibernate一对一主键关联映射(单向)
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- hibernate一对一主键关联_单向
- Hibernate学习笔记_08_一对一单向、双向主键关联
- Hibernate一对一 主键关联映射(one-to-one)
- Hibernate 一对一主键双向关联
- 一个Hibernate一对一主键双向关联实例
- Hibernate 一对一主键单向关联
- Hibernate 一对一主键双向关联