java - JPA 和 TableView 。可以做到吗?

标签 java jakarta-ee jpa view ejb-3.0

我们目前有一个 Java EE 系统,我们在其中使用 JPA 映射到我们的数据库。这是一个相当完善的系统,大约有 20 个实体。

我们现在被命令为所有事情使用 View 。例如:如果我们有一个名为 PERMISSION 的表,那么我们还需要一个名为 PERMISSION_VIEW 的 View 。基本上我们需要对每个表都这样做,而我们的应用程序只能通过查询 View 来访问数据。

现在我们所有的实体 bean 看起来像这样:

@Entity
@Table(name = "PERMISSION")
@NamedQueries({
        @NamedQuery(name = "Permission.findByPK", query = "SELECT p FROM Permission p WHERE p.dpNum = :dpNumber"),
        @NamedQuery(name = "Permission.deleteAll", query = "DELETE FROM Permission") })
public class Permission implements Serializable {

}
  • 首先,如果只允许使用 View ,如何更新表格。物化 View 可以解决这个问题吗?
  • 其次,如果我们只能使用 View ,将需要多少重写?例如。对于每个实体,我们需要编写 @Table(name = "PERMISSION_VIEW") 来描述实体,但是,在进行更新时,它需要对 PERMISSION 表执行此操作。您到底是如何将其整合到实体 bean 中的?

最佳答案

有关 JPA 和数据库 View 的更多信息,请参阅 http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Views

In JPA you can map to a VIEW the same as a table, using the @Table annotation. You can then map each column in the view to your object's attributes. Views are normally read-only, so object's mapping to views are normally also read-only. In most databases views can also be updatable depending on how complex to query is that they encapsulate. Even for complex queries database triggers can normally be used to update into the view.

关于java - JPA 和 TableView 。可以做到吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16686501/

相关文章:

java - 没有用于带有 JavaSE 应用程序的 EntityManager 的持久性提供程序?

java - 在 100 多个文件中实现序列化

Java和Xml基础知识和学习

Java Spring 内联文本编辑器

java - 将 JSF 理解为 MVC 框架

java - Spring Data JpaRepository 方法问题中的 Pageable 和 @Param [2]

java - org.hibernate.PersistentObjectException 与 Spring、Maven 和 Hibernate 的组合

java - 第二个 for 循环如何像在第一个 for 循环内一样工作?

java - 使用 Java 显示 HTML

java - 无法使用 @PersistenceContext 注入(inject) EntityManager [将持久性单元注入(inject) CDI 托管 bean 时出错。]