java - jpa2 hibernate使用现有实体从 View 加载数据

标签 java hibernate view jpa-2.0

在我的 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/

相关文章:

java - 创建图像的可点击按钮

java - 如何从 ByteBuffer 读取无符号 double 值

java - JPA ManyToOne 字段未存储

java - 使用 Hibernate 在 HSQL 中更改表时不兼容的数据类型

java - 避免 Hibernate LazyInitializationExceptions 的架构

sql-server - SQL Server 中的常量函数(使用函数的慢 View )

postgresql - 无法授予在架构上创建 View

Java 检测声音何时停止

java - 当属性名称以 "set"开头时出现未映射的目标属性警告

android - GestureOverlayView 不工作