在我的 JPA2/Hibernate 应用程序中,我有表 USERS 和匹配的实体 User + DAO。
现在,我创建了 View V_USERS,其中包含从表 USERS 中过滤的数据。
我可以重用实体 User 来从此 View 查询数据吗?
最佳答案
不,你不能。您可以将两个不同的类映射到同一个表中,但反之则不行。
此限制的原因很简单,JPA 提供者如何知道您在以下查询中想到的是哪个表:
em.createQuery("SELECT u FROM User u");
但是,您可能想要创建一个具有所有属性的基类 AbstractUser
,并且必须清空子类:User
以及例如 VUser
。后两个类将映射到不同的表/ View 。请参阅MappedSuperclass还有一个例子。
@MappedSuperclass
public abstract class AbstractUser {
//all your columns/JPA mapping go here
}
@Entity
@Table(name="USERS")
public class User extends AbstractUser {}
@Entity
@Table(name="V_USERS")
public class VUser extends AbstractUser {}
关于java - jpa2 hibernate使用现有实体从 View 加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882309/