Person与Address关联:单向1->N,【有连接表的】

Person.java

package org.crazyit.app.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "Person_inf")
public class Person {

@Column(name = "person_id")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String name;

private Integer age;

// 单向1->N:一对一关联关系
// 定义该person实体关联的address实体
@OneToMany(targetEntity = Address.class // 指定关联对象
, cascade = CascadeType.ALL// 指定级联方式 。
)
// 定义连接表中名为person_id的外键列,该外键列参照当前实体对应表的主键列
@JoinTable(name = "person_address", // 指定连接表
joinColumns = @JoinColumn(name = "person_id", //
referencedColumnName = "person_id") , //
//定义连接表中名为address_id的外键列,
//该外键列参照当前实体的关联实体对应表的主键列
inverseJoinColumns = @JoinColumn(name = "address_id", //
referencedColumnName = "address_id", //
unique = true) )
private Set<Address> addresses = new HashSet<Address>();

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 Set<Address> getAddresses() {
return addresses;
}

public void setAddresses(Set<Address> addresses) {
this.addresses = addresses;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

}

Address.java

package org.crazyit.app.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

@Entity
@Table(name = "Address_inf")
public class Address {

@Id
@Column(name = "address_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

// 地址详细
private String addressDetail;

// 无参构造方法
public Address() {
}

// 初始化全部成员变量
public Address(String addressDetail) {
this.addressDetail = addressDetail;
}

public Integer getId() {
return id;
}

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

public String getAddressDetail() {
return addressDetail;
}

public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}

}

//数据模型

注解:【有连接表的】Hibernate单向1->N关联的更多相关文章

  1. Hibernate单向“一对多”关联

    1. 基于连接表的单向“一对多”关联,应该优先被采用其中指定many-to-many的unique="true",为单向“一对多”,不指定就是单向“多对多” <class n ...

  2. Hibernate单向“多对一”关联

    1. 基于外键关联的单向“多对一”关联是最常见的单向关联其中指定many-to-one的unique="true",为单向“一对一”,不指定就是单向“多对一” <class  ...

  3. 注解:【有连接表的】Hibernate单向N->N关联

    Person与Address关联:单向N->N,[有连接表的] #和单向1->N关联代码完全相同,控制关系的一端需要增加一个set类型的属性,被关联的持久化实例以集合形式存在. #N-&g ...

  4. 注解:【有连接表的】Hibernate单向1->1关联

    Person与Address关联:单向1->1,[有连接表的] (使用较少!) Person.java package org.crazyit.app.domain; import javax. ...

  5. 注解:【有连接表的】Hibernate单向N->1关联

    Person与Address关联:单向N->1,[有连接表的] Person.java package org.crazyit.app.domain; import javax.persiste ...

  6. 注解:【无连接表的】Hibernate单向1->N关联

    Person与Address关联:单向1->N,[无连接表的] (性能较低,不推荐使用!) Person.java package org.crazyit.app.domain; import ...

  7. 注解:【有连接表的】Hibernate双向1->N关联 (N端、1端同时参与控制关联关系)

    Person与Address关联:双向1->N,[有连接表的],N端.1端同时参与控制关联关系 Person.java package org.crazyit.app.domain; impor ...

  8. 注解:【有连接表的】Hibernate双向1->N关联(仅N端控制关联关系)

    Person与Address关联:双向1->N,[有连接表的],N端控制关联关系 Person.java package org.crazyit.app.domain; import java. ...

  9. hibernate注解(自动建表如何有表DDL注释) -- Comment用法

    import java.io.Serializable; import java.sql.Date; import java.sql.Timestamp; import javax.persisten ...

随机推荐

  1. C#之GDI+

    1.使用Brushes填充矩形区域 Graphics g = e.Graphics; g.FillRectangle(Brushes.Green, , , , )); 2.使用LinearGradie ...

  2. Failed to issue method call: Unit httpd.service failed to load: No such file or directory.

    centos7修改httpd.service后运行systemctl restart httpd.service提示 Failed to issue method call: Unit httpd.s ...

  3. ios8 新增的 showViewController 和 showDetailViewController

    1.showViewController 先看看说明: You use this method to decouple the need to display a view controller fr ...

  4. monitor system

    #!/bin/bash # #Snapshot_Stats - produces a report for system stats # This report will mail to root. ...

  5. 使用iScroll时,input等不能输入内容的解决方法(share)

    最近做移动平台的应用,使用iscroll使屏幕上下滑动.发现当使用iscroll后,input等不能输入内容了.只要在iscroll.js文件中加入如下代码就ok了. function allowFo ...

  6. 【linux】学习4

    文件压缩: gzip :压缩   解压缩 zcat: 读取压缩文件 gzip text1  :压缩text1 得到 text1.gz 原文件不见了 gzip -c text1 > text1.g ...

  7. MAC系统下,删除.svn文件

    MAC系统下,.svn文件是隐藏的. 如果项目是非export导出的,那么项目中会有很多的.svn文件. 如果项目的体积非常庞大,我们如何快速的批量删除.svn文件呢?下面是操作方法: 打开终端,cd ...

  8. 解药还是毒药(codevs 2594)

    2594 解药还是毒药  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description Smart研制出对 ...

  9. eclipse failed to create the java virtual machine 问题图文解析

    eclipse failed to create the java virtual machine 问题图文解析 分类: java常用软件异常2010-10-02 23:45 73200人阅读 评论( ...

  10. JavaScript基础——使用JavaScript对象

    JavaScript有许多内置对象,如Number(数字).Array(数组).String(字符串).Date(日期)和Math(数学).这些内置对象都有成员属性和方法.除了JavaScript对象 ...