Hibernate注解方式实现1-1双向关联

以微博或博客为例,我们希望用户-用户信息设计为如下关系,即用户表用户口令登录等操作、用户信息表用户记录信息:

用户User代码清单:

import ***;

/**
 * @author Barudisshu
 */
@Entity
@Table(name = "t_user", schema = "", catalog = "db_blog")
public class User implements Serializable {

    private int id;                 //用户自动Id
    private String username;        //用户名
    private String password;        //密码

    private Info info;              //用户信息

    @Id
    @Column(name = "id", nullable = false, insertable = true, updatable = true)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Basic
    @Column(name = "username", nullable = true, insertable = true, updatable = true, length = 255)
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Basic
    @Column(name = "password", nullable = true, insertable = true, updatable = true, length = 255)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @OneToOne(cascade = CascadeType.ALL, targetEntity = Info.class,mappedBy = "user")
    public Info getInfo() {
        return info;
    }

    public void setInfo(Info info) {
        this.info = info;
    }
    //Override Object method
}

使用@OnetoOne标明1-1关联关系,并指定映射实体字段为user。

用户信息Info代码清单:

import ***;

/**
 * @author Barudisshu
 */
@Entity
@Table(name = "t_info", schema = "", catalog = "db_planetarian")
public class Info implements Serializable {

    private int id;             //用户信息自动Id
    private String mood;        //发布心情
    private Integer qq;         //QQ号码
    private String email;       //电子邮箱
    private String phone;       //电话号码
    private String avatar;      //头像地址
    private String qqBlog;      //腾讯博客
    private String sinaBlog;    //新浪博客
    private String leave;       //博主留言

    private User user;          //用户信息

    @Id
    @Column(name = "id", nullable = false, insertable = true, updatable = true)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Basic
    @Column(name = "mood", nullable = true, insertable = true, updatable = true, length = 255)
    public String getMood() {
        return mood;
    }

    public void setMood(String mood) {
        this.mood = mood;
    }

    @Basic
    @Column(name = "QQ", nullable = true, insertable = true, updatable = true)
    public Integer getQq() {
        return qq;
    }

    public void setQq(Integer qq) {
        this.qq = qq;
    }

    @Basic
    @Column(name = "email", nullable = true, insertable = true, updatable = true, length = 400)
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Basic
    @Column(name = "phone", nullable = true, insertable = true, updatable = true, length = 120)
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Basic
    @Column(name = "avatar", nullable = true, insertable = true, updatable = true, length = 4000)
    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    @Basic
    @Column(name = "QQBlog", nullable = true, insertable = true, updatable = true, length = 4000)
    public String getQqBlog() {
        return qqBlog;
    }

    public void setQqBlog(String qqBlog) {
        this.qqBlog = qqBlog;
    }

    @Basic
    @Column(name = "SinaBlog", nullable = true, insertable = true, updatable = true, length = 4000)
    public String getSinaBlog() {
        return sinaBlog;
    }

    public void setSinaBlog(String sinaBlog) {
        this.sinaBlog = sinaBlog;
    }

    @Basic
    @Column(name = "contact", nullable = true, insertable = true, updatable = true, length = 800)
    public String getLeave() {
        return leave;
    }

    public void setLeave(String leave) {
        this.leave = leave;
    }

    @OneToOne(optional = false)
    @PrimaryKeyJoinColumn
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
    //Override Object method
}

用户信息表Info使用@PrimaryKeyJoinColumn注解字段user为主键字段。

时间: 2024-11-09 02:02:42

Hibernate注解方式实现1-1双向关联的相关文章

hibernate 注解方式讲解映射关系

注解方式讲解映射关系 1       One-To-One Unidirectional with Foreign Key 单向关联外键方式. 1.1         关系如下 学生和地址关系的例子.一个学生住在一个地址上.一个地址只能由一个学生占用. 1.2         Address代码: package com.daodaofun.domain; import javax.persistence.*; @Entity @Table(name="STUDENT") public

hibernate注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

hibernate之关于一对一单向,双向关联映射

[hibernate]之关于一对一单向,双向关联映射 首先我们来看,Hibernate官方对于一对一单向关联的解释: 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向一对一关 联中的外键字段具有唯一性约束. ok,那我们也可以这样理解,一对一其实就是多对一关联的特殊形式,我们知道Hibernate的配置方式有两种,分别是Annotations,XML两种配置方式! Annotations的一对一单向关联映射 人(User)和***号(Card) @Entity @Ta

Hibernate注解方式开发实体类

Hibernate注解 1.@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2.@Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 catalog:可选,表示Cat

hibernate的映射之四(多对多双向关联)

Many-to-Many 多对多的映射可以使用一组Java集合不包含任何重复的元素来实现.我们已经看到了Hibernate如何设置映射集合. 集(SET)被映射到与映射表中<set>元素,并以java.util.HashSet初始化.您可以使用Set集合在类中时,集合不需要重复的元素. 多对多双向关联: 由于是双向关联,所以需要在二个实体中植入对方的实体集合. 我依旧以员工和项目为例子. 1.准备JavaBean(持久化类) 员工实体类 public class Employee { priv

Hibernate!!多对多(单向|双向)关联映射

多对多——单向关联映射 1 package com.hb.model; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 import javax.persistence.Entity; 7 import javax.persistence.GeneratedValue; 8 import javax.persistence.Id; 9 import javax.persistence.ManyToMany; 10 import

Hibernate注解方式实现1-N双向关联

由于Hibernate可以实现逆向工程,可以自动在数据库中创建表,因此这里不提供数据字典内容. 以微博或博客为例,用户和博客之间属于一对多的关系,即1-N型,在数据库中我们希望构建如下关系 创建用户实体类User: import ***; /** * @author Barudisshu */ @Entity @Table(name = "t_user", schema = "", catalog = "db_blog") public clas

hibernate注解方式实现一对多映射

首先是在hibernate.cfg.xml中引入要映射的class <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-co

Hibernate注解:一对多外键关联

情形:两个表,cms_mode是主表,cms_model_field是子表,cms_model_field的model_id字段关联到cms_model的主键. # # Source for table cms_model # DROP TABLE IF EXISTS `cms_model`; CREATE TABLE `cms_model` ( `model_id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `title