java - JPA-继承

标签 java hibernate jpa

类层次结构:

| Vehicle
+ - Motorized
+ - - Truck

数据库表 - 将“车辆”字段放入“机动化”表中,但将“机动化”和“卡车”保留为单独的表:

机动化 - 有车辆字段
卡车 - FK 至机动化

JPA 中是否有一种简单的方法可以做到这一点?

例如这样就可以使用以下内容:

EntityManager em = factory.createEntityManager();
Query q = em.createQuery("select t from Todo t");
List<Vehicle> vehicles = q.getResultList();

find方法可以实现多态吗?

Vehicle vehicle = em.find(Vehicle.class, 123);

最佳答案

我认为您正在寻找 JPA joined inheritance .

我不太确定 find 方法是否会获得多态性,但我认为是这样,因为 Hibernate 按 ID 维护其所有对象的一级缓存;如果您通过 ID 请求该对象,则它必须返回相应子类的实例。

关于java - JPA-继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765881/

相关文章:

java - Horse 对象继承

java - Hibernate JPA 简化了 update()、delete()、add() 的代码

java - JBoss + Hibernate + Faces教程

java - 如何使用 JPA 注释注释 MYSQL 自动增量字段

java - 轴错误无法进行模块寻址

java - 使用 Connector/J 连接到 MYSQL

java - Spring 问题 - URI 的数量必须为偶数

hibernate - ColdFusion ORM 可以处理 Unicode 字符串吗?

java - 有什么方法可以让 JPA 更快地持久化对象吗?

java - Hibernate - 使用在运行时定义的字段加载实体