hibernate外键一对一关联

两个实体类

package vo;

public class message {
private int mid;
private String mname;
private int age;
private String mail;
private String address;
private String tel;

private User user;
public int getMid() {
return mid;
}
public void setMid(int mid) {
this.mid = mid;
}
public String getMname() {
return mname;
}
public void setMname(String mname) {
this.mname = mname;
}
@Override
public String toString() {
return "message [mid=" + mid + ", mname=" + mname + ", age=" + age
+ ", mail=" + mail + ", address=" + address + ", tel=" + tel
+ ", user=" + user + "]";
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}

public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}

}

第二个user实体类

package vo;

public class User {
private Integer id;
private message m;
public message getM() {
return m;
}
public void setM(message m) {
this.m = m;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
private String name;
private String pwd;
}

hibernate配置

<?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>

<class name="vo.message" table="message">//name:实体的路径,table:对应表的名字
<id name="mid" column="mid">//id为主键  name为实体中的属性 column为表中的列名
<generator class="native"></generator>
</id>
<property name="mname" column="mname"></property>//非主键
<property name="age" column="age"></property>
<property name="mail" column="mail"></property>
<property name="address" column="address"></property>
<property name="tel" column="tel"></property>
<one-to-one name="user" constrained="true" cascade="all"></one-to-one>//表示一对一对应 cascade为级联关系

</class>

</hibernate-mapping>

以下为user表对应的数据配置:

将项目部署在tomcat服务器上就可以自动生成表。

时间: 2024-11-07 20:04:15

hibernate外键一对一关联的相关文章

Hibernate一对一外键单向关联

模型user,address user中有一个字段为address_id与addrees的addressid进行外键关联 user sql CREATE TABLE `NewTable` ( `userid`  int(11) NOT NULL AUTO_INCREMENT , `account`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , `password`  varchar(255

Hibernate之实现一对一关联映射关系

Hibernate中实现一对一映射有基于外键的方式和基于主键的方式.由于基于主键方式的映射在实现删除等操作时存在的问题且不够灵活,一般建议使用基于外键的方式实现. 以个人与身份证的关系为例(主要看映射文件的配置和实体类): 基于外键的方式: package test.hibernate.hbmOneToOne; public class Person { private Integer id; private String name; private IDCard idCard; public

Hibernate中的一对一关联和组件的映射

Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别完成以下持久化操作 (1)保存员工档案的同时分配给员工一个账号 (2)加载员工档案的同时加载账号信息 一:按照外键映射 需要提示: HibernateUtil工具类(用于获取session和关闭session) package cn.zhang.util; import org.h

Hibernate之映射一对一关联

一.一对一关联的概念: 一对一之间的关联是指:两张表中的信息是一对一的关系,比如我们每个人和身份证的关系,一个人对应一张身份证,一张身份证也只能对应一个人. Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射. 在下面的例子中我们分别以两张表:员工表和员工档案表为例:介绍这两种映射关系方式. 二.按外键映射 1.关联的外键可存放于任意一端,并在存放外键的一端增加<many-to-one>元素,能够增加唯一约束实现一对一关联.        2.<many-t

Hibernate一对一外键双向关联(Annotation配置)

如上图所示:一个学生有一个学生证号,一个学生证号对应一名学生.在Hibernate中怎么用Annotation来实现呢? 学生类,主键是id:学生证的主键也是Id: Student.java package edu.xaut.hibernate; import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persisten

Hibernate注解:一对一主键关联

情形:两个表,my_site和my_site_company,通过主键site_id唯一关联.my_site的主键是自动增加,my_site_company的主键依赖于my_site. # # Source for table my_site # DROP TABLE IF EXISTS `my_site`; CREATE TABLE `my_site` ( `site_id` int(11) NOT NULL AUTO_INCREMENT, `site_name` varchar(100) D

【Hibernate步步为营】--单向关联一对一映射(一)

上篇文章对多对一的关联映射做了详细的分析,它在实现上可以有两种方式,并且这两种方式实现也很简单,关键是标签<many-to-one>的使用,它分别指明了多端和一端的映射关系,这种映射关系既是对象模型中的聚合关系.接下来继续讨论关联映射. 一.唯一外键 唯一外键说的是数据库表中的每一行的外键唯一对应着另一张表中的主键,也就是说一个表的主键作为另一张表的外键,并且它们之间的关系是唯一的,这种反应到关系模型中如下图所示: 上图的两个实体表,分别为人和身份证,很明显的一个人对应着一个身份证.身份证作为

Hibernate 一对一关联查询

一对一关联,可以分为两种.一种是基于外键的关联,另一种是基于主键的关联.如图 一.基于外键的方式 User.java 1 package com.proc.one2one; 2 3 public class User { 4 5 private Integer id; 6 private String name; 7 private IdCard card; 8 public User() { 9 } 10 public User(String name) { 11 this.name = na

[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常

假设当前表结构如下: food表字段有foodid,name,外键businessid,外键type business表字段有,name,外键type type表字段有id,name,foodid Hibernate生成的对应POJO分别是Food,Business,Type 需要查询food表部分字段,如name和外键businessid 则可在Food类中添加只有相应成员变量的构造方法,Food(String name,Business business) 使用hql语句 select ne