博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate,JPA注解@SecondaryTables
阅读量:6139 次
发布时间:2019-06-21

本文共 9064 字,大约阅读时间需要 30 分钟。

使用类一级的 @SecondaryTable@SecondaryTables注解可以实现单个实体到多个表的映射. 使用 @Column或者 @JoinColumn注解中的table参数可指定某个列所属的特定表.

使用类一级的 @SecondaryTable@SecondaryTables注解可以实现单个实体到多个表的映射. 使用 @Column或者 @JoinColumn注解中的table参数可指定某个列所属的特定表.

用例代码如下:

  • 数据库DDL语句

1,CAT表

1 create table CAT 2 ( 3   id          VARCHAR2(32 CHAR) not null, 4   create_time TIMESTAMP(6), 5   update_time TIMESTAMP(6), 6   cat_name    VARCHAR2(255 CHAR), 7   first_name  VARCHAR2(255 CHAR), 8   last_name   VARCHAR2(255 CHAR), 9   version     NUMBER(10) not null10 )

2,CAT_INFO表

1 create table CAT_INFO2 (3   address  VARCHAR2(255 CHAR),4   birthday TIMESTAMP(6),5   cat_id   VARCHAR2(32 CHAR) not null6 )

3,CAT_INFO_2表

1 create table CAT_INFO_22 (3   gender NUMBER(10),4   mobile VARCHAR2(255 CHAR),5   cat_id VARCHAR2(32 CHAR) not null6 )
  • hibernate.cfg.xml
1 
2 5
6
7
8
org.hibernate.dialect.Oracle10gDialect
9
oracle.jdbc.OracleDriver
10
jdbc:oracle:thin:@127.0.0.1:1521:orcl
11
wxuatuser
12
xlh
13
true
14
15
update
16
17 18
19 20
21
  • java类

实体类 - 基类 

1 package model; 2 import java.io.Serializable; 3 import java.util.Date; 4 import javax.persistence.Column; 5 import javax.persistence.GeneratedValue; 6 import javax.persistence.Id; 7 import javax.persistence.MappedSuperclass; 8 import org.hibernate.annotations.GenericGenerator; 9 /**10  * 实体类 - 基类11  */12 @MappedSuperclass13 public class BaseEntity implements Serializable {14 15     private static final long serialVersionUID = -6718838800112233445L;16 17     private String id;// ID18     private Date create_time;// 创建日期19     private Date update_time;// 修改日期20     @Id21     @Column(length = 32, nullable = true)22     @GeneratedValue(generator = "uuid")23     @GenericGenerator(name = "uuid", strategy = "uuid")24     public String getId() {25         return id;26     }27     public void setId(String id) {28         this.id = id;29     }30     @Column(updatable = false)31     public Date getCreate_time() {32         return create_time;33     }34     public void setCreate_time(Date create_time) {35         this.create_time = create_time;36     }37     public Date getUpdate_time() {38         return update_time;39     }40     public void setUpdate_time(Date update_time) {41         this.update_time = update_time;42     }43     @Override44     public int hashCode() {45         return id == null ? System.identityHashCode(this) : id.hashCode();46     }47     @Override48     public boolean equals(Object obj) {49         if (this == obj) {50             return true;51         }52         if (obj == null) {53             return false;54         }55         if (getClass().getPackage() != obj.getClass().getPackage()) {56             return false;57         }58         final BaseEntity other = (BaseEntity) obj;59         if (id == null) {60             if (other.getId() != null) {61                 return false;62             }63         } else if (!id.equals(other.getId())) {64             return false;65         }66         return true;67     }68 }

实体类

1 package a6_SecondaryTable; 2 import java.util.Date; 3 import javax.persistence.AttributeOverride; 4 import javax.persistence.AttributeOverrides; 5 import javax.persistence.Column; 6 import javax.persistence.Embedded; 7 import javax.persistence.Entity; 8 import javax.persistence.PrimaryKeyJoinColumn; 9 import javax.persistence.SecondaryTable;10 import javax.persistence.SecondaryTables;11 import javax.persistence.Table;12 import javax.persistence.Version;13 import model.BaseEntity;14 import org.hibernate.annotations.DynamicInsert;15 import org.hibernate.annotations.DynamicUpdate;16 17 @Entity18 @DynamicInsert19 @DynamicUpdate20 @Table(name="CAT")21 @SecondaryTables( value = {22         @SecondaryTable(name="CAT_INFO",pkJoinColumns=@PrimaryKeyJoinColumn(name="CAT_ID")),23         @SecondaryTable(name="CAT_INFO_2",pkJoinColumns=@PrimaryKeyJoinColumn(name="CAT_ID")) })24 public class CatSecondaryTables extends BaseEntity{25     /**26      * 实体类27      */28     private static final long serialVersionUID = -2776330321385582872L;29 30     private String cat_name;31     private Name name;32     private int version;33     private String address;34     private Date birthday;35     private Integer gender;36     private String mobile;37     38     @Version39     public int getVersion() {40         return version;41     }42 43     public void setVersion(int version) {44         this.version = version;45     }46 47     public String getCat_name() {48         return cat_name;49     }50 51     public void setCat_name(String cat_name) {52         this.cat_name = cat_name;53     }54 55     @Embedded56     @AttributeOverrides({57             @AttributeOverride(name = "first_name", column = @Column(name = "first_name")),58             @AttributeOverride(name = "last_name", column = @Column(name = "last_name")) })59     public Name getName() {60         return name;61     }62 63     public void setName(Name name) {64         this.name = name;65     }66     @Column(name="ADDRESS", table="CAT_INFO")  67     public String getAddress() {68         return address;69     }70 71     public void setAddress(String address) {72         this.address = address;73     }74     @Column(name="BIRTHDAY", table="CAT_INFO")  75     public Date getBirthday() {76         return birthday;77     }78 79     public void setBirthday(Date birthday) {80         this.birthday = birthday;81     }82     @Column(name="GENDER", table="CAT_INFO_2")  83     public Integer getGender() {84         return gender;85     }86 87     public void setGender(Integer gender) {88         this.gender = gender;89     }90     @Column(name="MOBILE", table="CAT_INFO_2")  91     public String getMobile() {92         return mobile;93     }94 95     public void setMobile(String mobile) {96         this.mobile = mobile;97     }98 }

Dao

1 package daoUtil; 2 import org.hibernate.HibernateException; 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 import org.hibernate.service.ServiceRegistry; 8 import org.hibernate.service.ServiceRegistryBuilder; 9 10 public class HibernateUtil {11 12     private static final SessionFactory sessionFactory;13 14     static {15         try {16             Configuration cfg = new Configuration().configure();17             ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()18                     .applySettings(cfg.getProperties()).buildServiceRegistry();19             sessionFactory = cfg.buildSessionFactory(serviceRegistry);20         } catch (Throwable ex) {21             throw new ExceptionInInitializerError(ex);22         }23     }24 25     public static Session getSession() throws HibernateException {26         return sessionFactory.openSession();27     }28 29     public static Object save(Object obj){30         Session session = HibernateUtil.getSession();31         Transaction tx = null;32         try {33             tx = session.beginTransaction();34             session.save(obj);35             tx.commit();36         } catch (RuntimeException e) {37             if (tx != null) {38                 tx.rollback();39             }40             throw e;41         } finally {42             session.close();43         }44         return obj;45     }46     47     public static void delete(Class
clazz,String id){48 Session session = HibernateUtil.getSession();49 Transaction tx = null;50 try {51 tx = session.beginTransaction();52 Object obj = session.get(clazz,id);53 session.delete(obj);54 tx.commit();55 } catch (RuntimeException e) {56 if (tx != null) {57 tx.rollback();58 }59 throw e;60 } finally {61 session.close();62 }63 }64 }

main

1 package a6_SecondaryTable; 2 import java.util.Date; 3 import daoUtil.HibernateUtil; 4  5 public class Test_SecondaryTables { 6  7     public static void main(String[] args) { 8          9         Name name = new Name();10         CatSecondaryTables cat = new CatSecondaryTables();11         cat.setCat_name("test7SecondaryTables2");12         cat.setName(name);13         cat.setAddress("中华人民共和国");14         cat.setBirthday(new Date());15         cat.setGender(1);16         cat.setMobile("13012345678");17         18         HibernateUtil.save(cat);19         System.out.println(cat.getId());20         21         CatSecondaryTables cat1 = (CatSecondaryTables)HibernateUtil.getSession().get(CatSecondaryTables.class, cat.getId());22         System.out.println(cat1.getId());23     }24 }

 

环境:JDK1.6,MAVEN,tomcat,eclipse

源码地址:http://files.cnblogs.com/files/xiluhua/hibernate%40SecondaryTables.rar

 

转载地址:http://vvkya.baihongyu.com/

你可能感兴趣的文章
【转载】JVM类加载机制小结
查看>>
Android Studio(七):项目从Eclipse到Android Studio迁移
查看>>
在Solr中使用中文分词
查看>>
Eclipse之CTRL+左键直接进入方法函数Implementation
查看>>
groovy/java自实现json解析器(2)JsonObject
查看>>
Linux IP_FORWARD introduce
查看>>
ThinkPHP getBy查询
查看>>
几条简单SQL的系统级抽象
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址
查看>>
java反射详解
查看>>
Rsync使用注意事项
查看>>
沐风老师3dsMax手把手教系列:椅子建模(款式001)
查看>>
Mac Tomcat 安装与配置
查看>>
自己写中文分词之(二)_用HMM模型实现分词
查看>>
java开发过程中的命名规范
查看>>
Linux系统启动过程及其修复过程简析(CentOS5、6)
查看>>
CentOS 7 防火墙设置
查看>>