【问题标题】:Create Hibernate JPA Views创建 Hibernate JPA 视图
【发布时间】:2012-03-15 03:59:39
【问题描述】:

我希望使用休眠实体从主表创建几个不同的视图。我认为这将是一个非常标准的场景,但是我没有找到关于这个主题的太多信息。

主表将包含位置,视图将是位置类型,例如州、国家/地区等。我知道这可以通过简单的查询限制轻松处理,但是管理层希望使用视图来完成。

我想知道是否可以在休眠 JPA 中创建视图(使用注释)。

【问题讨论】:

  • 你的问题不是很清楚。您是否在问是否可以将 JPA 实体映射到数据库视图?绝对可以。
  • 我想我不完全确定它是如何工作的,可以从 jpa 在数据库中创建视图,还是我需要先在数据库中创建它们然后将 JPA 实体映射到数据库视图?
  • 我从未尝试过从 JPA 创建(使用注释)。我在第一次在数据库中创建后使用它们。

标签: mysql hibernate postgresql jpa


【解决方案1】:

如果架构看起来像

id|locationtype|name|...

您可以使用 TPH(每个层次结构的表)映射您的实体

@Entity
@Table(name="Location")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="locationtype", discriminatorType=DiscriminatorType.STRING)
abstract class Location
{
    private int id;
    private String name;
}

@Entity
@DiscriminatorValue("state")
class State extends Location
{
    private String someOtherProp;
}

【讨论】:

  • 可以在您的设计中添加限制吗?例如,只有包含“PEST”类别的行,我试图消除在我的应用程序中使用复合键的需要,同时还使应用程序能够根据需要自动生成表,而不是手动运行 sql 语句。
  • 在休眠中有<class where="sql" 不知道如何在JPA 注释中应用。但是 where 子句中的列不会生成,它们也必须在其他地方声明。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多