您的位置:首页 > 其它

hibernate学习(设计多对多 关系 映射)

2015-12-27 16:59 387 查看
//
package org.crazy.app.domain;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;
@Entity
@Table(name="person_inf")
public class Person {
@Id
@Column(name="person_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String name;
private int age;
@ManyToMany(targetEntity=Address.class)
@JoinTable(name="person_address",
joinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id"),
inverseJoinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id"))
private Set<Address> address=new HashSet<Address>();

public Person() {

}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Set<Address> getAddress() {
return address;
}
public void setAddress(Set<Address> address) {
this.address = address;
}

}
//**************************************
package org.crazy.app.domain;

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

import javax.persistence.*;

@Entity
@Table(name="address_inf")
public class Address {
@Id
@Column(name="address_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer addressId;
private String addressDetail;
@ManyToMany(targetEntity=Person.class)
@JoinTable(name="person_address",
joinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id"),
inverseJoinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id"))
private Set<Person> persons=new HashSet<Person>();
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public Set<Person> getPersons() {
return persons;
}
public void setPersons(Set<Person> persons) {
this.persons = persons;
}
public Address(String addressDetail) {
this.addressDetail = addressDetail;
}
public Address() {

}

}


2,测试

Person p = new Person();
// 设置Person的name为crazyit
p.setName("crazyit");
p.setAge(20);
// 持久化Person对象(对应于插入主表记录)
session.save(p);
// 创建一个瞬态的Address对象
Address a = new Address("广州天河");
// 先设置Person和Address之间的关联关系
a.getPersons().add(p);
// 再持久化Address对象
session.persist(a);
// 创建一个瞬态的Address对象
Address a2 = new Address("上海虹口");
// 先设置Person和Address之间的关联关系
a2.getPersons().add(p);
// 再持久化Address对象(对应于插入从表记录)
session.persist(a2);

Person p2 = new Person();
p2.setName("fkit");
p2.setAge(29);
p2.getAddress().add(a2);
session.save(p2);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: