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

Person与Address关联:单向1->1,【有连接表的】 (使用较少!)

Person.java

package org.crazyit.app.domain;

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.OneToOne;
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->1:一对一关联关系
// 定义该person实体关联的address实体
@OneToOne(targetEntity = Address.class, // 指定关联对象
cascade = CascadeType.ALL// 指定级联方式
)
@JoinTable(name = "person_address", // 指定连接表
joinColumns = @JoinColumn(name = "person_id"//
, unique = true) , // 连接表的两个外键增加unique=true,
inverseJoinColumns = @JoinColumn(name = "address_id"//
, unique = true) ) // 连接表的两个外键增加unique=true
private Address 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 Address getAddress() {
return address;
}

public void setAddress(Address address) {
this.address = address;
}

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;

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

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="address_id")
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;
}

}

数据模型:

时间: 2024-10-12 17:23:16

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

Hibernate单向“一对多”关联

1. 基于连接表的单向"一对多"关联,应该优先被采用其中指定many-to-many的unique="true",为单向"一对多",不指定就是单向"多对多" <class name="Person">    <id name="id" column="personId"><generator class="native"

Hibernate单向“多对一”关联

1. 基于外键关联的单向"多对一"关联是最常见的单向关联其中指定many-to-one的unique="true",为单向"一对一",不指定就是单向"多对一" <class name="Person">    <id name="id" column="personId"><generator class="native&quo

注解:【有连接表的】Hibernate单向N-&gt;1关联

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

注解:【有连接表的】Hibernate双向1-&gt;N关联

Person与Address关联:双向1->N,[有连接表的],N端控制关联关系 Person.java package org.crazyit.app.domain; import java.util.HashSet;import java.util.Set; import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.p

Spring4 MVC+Hibernate4 Many-to-many连接表+MySQL+Maven实例

这篇文章显示 Hibernate 的多对多实例,在 Spring MVC CRUD Web应用程序中连接表.我们将同时讨论管理多对多关系在视图和后端. 我们将使用应用程序的Web界面创建,更新,删除和查询. 本教程是利用 Spring 的 org.springframework.core.convert.converter.Converter 接口,它帮助我们在项目的数据库中实现实体的映射标识. 完整的示例的说明介绍如下. 使用以下技术: Spring 4.1.7.RELEASE Hiberna

hibernate 单向 n-n

域模型: 关系数据模型 n-n 的关联必须使用连接表 与 1-n 映射类似,必须为 set 集合元素添加 key 子元素,指定 CATEGORIES_ITEMS 表中参照 CATEGORIES 表的外键为 CATEGORIY_ID. 与 1-n 关联映射不同的是,建立 n-n 关联时, 集合中的元素使用 many-to-many. many-to-many 子元素的 class 属性指定 items 集合中存放的是 Item 对象, column 属性指定 CATEGORIES_ITEMS 表中

Hibernate单向关联N-1

无连接表的N-1关联 多个Employee关联一个Department. Employee实体(N端): package com.ydoing.hibernate2; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.G

Hibernate单向关联N-N

单向N-N关联必须使用连接表. Company实体: package com.ydoing.hibernate5; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue;

Hibernate单向关联1-N

基于外键1-N关联(无连接表) 一个Customer关联多个Card Customer实体(1端): package com.ydoing.hibernate4; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.per