java - jpa 一个类对应多张相同结构的表
天蓬老师
天蓬老师 2017-04-18 09:38:13
[Java讨论组]

问题是:需要在数据库mysql中建多张结构完全相同,表名不同的表(A B),表结构为id(自增),name,....
笨办法是给A B表分别写个类,差别只在注解上:

@Table(name = "A/B")

但是不想维护属性相同的两个类,考虑过使用JPA的继承注解.

@Inheritance(Strategy=InheritanceType.TABLE_PER_CLASS)

但使用这个注解后主键值不能采用数据库自动生成.

各位大神,有什么好的解决方案嘛?求指教。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
迷茫

JPA中同一实体不能映射到多张表,如果表字段相同可以提出到公共类中。

1. 定义公共类实体

使用@MappedSuperclass注解声明父类,该类不会映射到数据库表,但它的属性都将映射到其子类的数据库表中。

@MappedSuperclass
public abstract class AbstractBase {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  
  // 公共属性
  // getter and setter
}

2. 定义实体A

@Entity
@Table(name = "TABLE_A")
public class A extends AbstractBase {

}

3. 定义实体B

@Entity
@Table(name = "TABLE_B")
public class B extends AbstractBase {

}

以上即可通过公共类来维护实体和表字段的映射关系。

@MappedSuperclass注解的更多说明请查看:JPA @MappedSuperclass注解的使用说明

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号