JPA中的@MappedSuperclass
说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html
用来申明一个超类,继承这个类的子类映射时要映射此类中的字段,可以当做是对entity抽取封装的类。如果子类想重写此类的映射信息,可以使用 AttributeOverride
and AssociationOverride
annotations
- Example: Concrete class as a mapped superclass
- @MappedSuperclass
- public class Employee {
- @Id
- protected Integer empId;
- @Version
- protected Integer version;
- @ManyToOne @JoinColumn(name="ADDR")
- protected Address address;
- public Integer getEmpId() { ... }
- public void setEmpId(Integer id) { ... }
- public Address getAddress() { ... }
- public void setAddress(Address addr) { ... }
- }
- // Default table is FTEMPLOYEE table
- @Entity
- public class FTEmployee extends Employee {
- // Inherited empId field mapped to FTEMPLOYEE.EMPID
- // Inherited version field mapped to FTEMPLOYEE.VERSION
- // Inherited address field mapped to FTEMPLOYEE.ADDR fk
- // Defaults to FTEMPLOYEE.SALARY
- protected Integer salary;
- public FTEmployee() {}
- public Integer getSalary() { ... }
- public void setSalary(Integer salary) { ... }
- }
- @Entity @Table(name="PT_EMP")
- @AssociationOverride(name="address",
- joincolumns=@JoinColumn(name="ADDR_ID"))
- public class PartTimeEmployee extends Employee {
- // Inherited empId field mapped to PT_EMP.EMPID
- // Inherited version field mapped to PT_EMP.VERSION
- // address field mapping overridden to PT_EMP.ADDR_ID fk
- @Column(name="WAGE")
- protected Float hourlyWage;
- public PartTimeEmployee() {}
- public Float getHourlyWage() { ... }
- public void setHourlyWage(Float wage) { ... }
- }
- Example: Non-entity superclass
- public class Cart {
- // This state is transient
- Integer operationCount;
- public Cart() { operationCount = 0; }
- public Integer getOperationCount() { return operationCount; }
- public void incrementOperationCount() { operationCount++; }
- }
- @Entity
- public class ShoppingCart extends Cart {
- Collection items = new Vector();
- public ShoppingCart() { super(); }
- ...
- @OneToMany
- public Collection getItems() { return items; }
- public void addItem(Item item) {
- items.add(item);
- incrementOperationCount();
- }
- }


JPA中的@MappedSuperclass的更多相关文章
- spring boot JPA中实体类常用注解
spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...
- JPA学习---第九节:JPA中的一对多双向关联与级联操作
一.一对多双向关联与级联操作 1.创建项目,配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> < ...
- 4、JPA table主键生成策略(在JPA中table策略是首推!!!)
用 table 来生成主键详解 它是在不影响性能情况下,通用性最强的 JPA 主键生成器.这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题. initialValue不起 ...
- Hibernate JPA 中配置Ehcache二级缓存
在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...
- 使用JPA中@Query 注解实现update 操作
spring使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.sav ...
- Jpa中设置OneToMany插入报异常解决办法
在Jpa中如果设置@OneToMany,但使用的时候,如果没有赋值,会报异常出现,这时只需要实例化一个空数组即可, 但类型一定要对应: 实例如下: newField.setxxxxxList(new ...
- JPA中EntityListeners注解的使用
使用场景 EntityListeners在jpa中使用,如果你是mybatis是不可以用的 它的意义 对实体属性变化的跟踪,它提供了保存前,保存后,更新前,更新后,删除前,删除后等状态,就像是拦截器一 ...
- Spring data JPA中使用Specifications动态构建查询
有时我们在查询某个实体的时候,给定的条件是不固定的,这是我们就需要动态 构建相应的查询语句,在JPA2.0中我们可以通过Criteria接口查询,JPA criteria查询.相比JPQL,其优势是类 ...
- JPA中建立数据库表和实体间映射小结
在JPA中,映射数据库表和实体的时候,需要注意一些细节如下, 实体类要用@Entity的注解: 要用 @Id 来注解一个主键: 如果跟数据库相关联,要用@Table注解相关数据库表: 实体类中字段需要 ...
随机推荐
- python学习小结8:I/O
文件I/O是Python中最重要的技术之一,在Python中对文件进行I/O操作是非常简单的. 打印到屏幕上 >>> print "python is really a g ...
- windows 2008 怎么对外开放端口
服务器已经运行了程序,但是android客户端连接不上, 网上提示说用: start /min telnet 192.168.3.42 2121 查看,但是我的提示tenlet找不到命令,估计是端口的 ...
- 2875: [Noi2012]随机数生成器 - BZOJ
DescriptionInput 包含6个用空格分割的m,a,c,X0,n和g,其中a,c,X0是非负整数,m,n,g是正整数. Output 输出一个数,即Xn mod gSample Input ...
- 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> ...
- mvc 分页js
<script type="text/javascript"> var configA = { options: { m ...
- centos6.5安装vmware-tools
一.问题描述 为什么使用vmware-tools:传文件方便,可以从主机中直接拖拽文件到centos中(但实际上我们可以用:WinSCP):鼠标切换方便,鼠标指到什么地方,表名当前正在操作哪个环境(但 ...
- idea从vcs引入maven项目报错
一.问题 用idea从cvs上check out的maven项目,打开后,发现依赖的jar包都有红色下划线.检查本地的maven库中有对应的包,那就是依赖有问题,idea没有在本地找到对应的包. 二. ...
- WCF 之 OperationContract
这里主要说的是同名异常: [ServiceContract] public interface IUserInfo { [OperationContract] string ShowName(stri ...
- 项目中的Libevent(多线程)
多线程版Libevent //保存线程的结构体 struct LibeventThread { LibEvtServer* that; //用作传参 std::shared_ptr<std::t ...
- 01-04-02【Nhibernate (版本3.3.1.4000) 出入江湖】HQL查询
public IList<Customer> GetAllHql() { IList<Customer> result = null; ISession session = _ ...