使用Hibernate与数据库视图

16
我在我的数据库中有一张名为"Samples"的表,它有一个名为"baseline"的布尔型变量。我想要查询这个变量值为1的行,所以我在数据库中创建了一个视图(MySQL)。现在,我想要查询这个视图(命名为"Baselines"),而不是查询"Samples"表。
我需要在hibernate配置文件中为这个视图添加声明吗?此外,我需要为此创建另一个名为"Baselines"的Java类吗?

你不需要为此目的创建视图,你可以通过 filterwhere 注解来实现。另外,你也可以使用 JPA。在同一张表上进行搜索和过滤非常常见,不需要使用视图。只有在存在复杂的连接时才需要使用视图。 - garg10may
1个回答

18
Hibernate可以像对待任何表一样处理视图。只需基于该视图定义一个实体类(如你所说的Baselines)即可。
使用视图最常见的困难是一些数据库引擎无法处理对视图的插入或更新,因此如果应用程序试图修改数据,请注意这一点。我不知道MySQL是否能够处理这个问题。
使用Hibernate Filters的替代方法,可以在Hibernate会话级别执行相同的操作。

那我需要创建一个名为Baselines的Java类,其字段与Samples类相同吗? - Gaurav Suman
2
您可以添加@Immutable以避免更新。如果您从实体生成数据库模式,您可能还想使用@Subselect("select * from BaselinesView") - Nux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接