Hibernate之一对多(注解实现)
来源:互联网 发布:2016中国域名备案后缀 编辑:程序博客网 时间:2024/04/29 08:49
package com.oneToMany;import java.util.HashSet;import java.util.Set;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;@Entity@Table(name="Student")public class Student { private long id; private String studentName; private Set<Phone> studentPhoneNumbers=new HashSet<Phone>(0); public Student(){ //Hibernate调用 } public Student(String studentName, Set<Phone> studentPhoneNumbers){ this.studentName=studentName; this.studentPhoneNumbers=studentPhoneNumbers; } public void setId(long id) { this.id = id; } @Id//主键 @GeneratedValue @Column(name="Student_id") public long getId() { return id; } public void setStudentName(String studentName) { this.studentName = studentName; } /** * @Column列字段名 */ @Column(name="Student_name",length=100,nullable=false) public String getStudentName() { return studentName; } public void setStudentPhoneNumbers(Set<Phone> studentPhoneNumbers) { this.studentPhoneNumbers = studentPhoneNumbers; } @OneToMany//在Student实体类和Phone实体类之间创建一对多的关系(一个学生有多个号码) @Cascade({CascadeType.ALL}) /** * @JoinTable 创建关联的表Student_phone * @JoinColumn 创建在关联的表中关联的字段(列) * joinColumns “一端”和“多端”关联的字段 * inverseJoinColumns “多端”和“一端”关联的字段 */ @JoinTable(name="Student_phone",joinColumns={@JoinColumn(name="Student_id")}, inverseJoinColumns={@JoinColumn(name="Phone_id")}) public Set<Phone> getStudentPhoneNumbers() { return studentPhoneNumbers; }}
package com.oneToMany;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="Phone")public class Phone { private long phoneId; private String phoneNumber; private String phoneType; public Phone() { //Hibernate调用 } public Phone(String phoneNumber,String phoneType) { this.phoneNumber=phoneNumber; this.phoneType=phoneType; } public void setPhoneId(long phoneId) { this.phoneId = phoneId; } @Id @GeneratedValue @Column(name="Phone_id") public long getPhoneId() { return phoneId; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } @Column(name="number",nullable=false,length=15) public String getPhoneNumber() { return phoneNumber; } public void setPhoneType(String phoneType) { this.phoneType = phoneType; } @Column(name="type",nullable=false,length=10) public String getPhoneType() { return phoneType; }}
package com.oneToMany;import java.util.HashSet;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;public class TestDemo { public static void main(String[] args) { StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").build(); SessionFactory factory = new MetadataSources(registry).buildMetadata() .buildSessionFactory(); // 获取Session Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); try { Set<Phone> phoneNumbers = new HashSet<Phone>(); phoneNumbers.add(new Phone("123345","house")); phoneNumbers.add(new Phone("456722454","mobile")); Student student = new Student("Jeff", phoneNumbers); session.save(student); transaction.commit(); } catch (Exception e) { transaction.rollback();// 回滚事务 e.printStackTrace(); } finally { if (session != null){ session.close(); } } }}
效果图
0 0
- Hibernate之一对多(注解实现)
- hibernate 注解实现多对多
- hibernate[注解]实现[多对多]关系
- hibernate之一对多
- hibernate注解实现1对多和多对多
- hibernate使用注解实现多对多关联映射
- Hibernate使用持久化注解实现多对一映射
- Hibernate之一对多关联
- Hibernate初探之一对多
- hibernate 多对一注解
- hibernate之多对多注解
- Hibernate 笔记二(多表设计之一对多)
- Hibernate(1)关联映射之一对多
- 【Hibernate系列】(六):关联映射之一对多
- hibernate进阶之路之一对多映射(四)
- Hibernate初探之一对多映射(1)
- Hibernate初探之一对多映射(2)
- hibernate初探之一对多映射(二)
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
- TabLayout的简单使用
- 第二篇《iOS中使用AFNetWorking时如何将responseObject传出》
- Java8新特性——Lambda表达式(一)
- php支持八种原始类型:
- Hibernate之一对多(注解实现)
- maven在eclipse中的学习总结
- C++ 智能指针详解
- iOS中GIF图片的加载
- Socket编程
- git使用与工作流程
- 包的访问权限
- 拓扑学(代数拓扑学)的有趣应用
- POJ 3140 Contestants Division (删边,简单树形DP)