Hibernate - 将具有单个值的视图映射到只读字段

时间:2011-05-05 19:36:36

标签: java mysql hibernate view

(Hibernate 3.6,Mysql 5)

我有一个名为'Program'的映射类(正常工作)。

我还有一个每天都会使用汇总统计信息更新的视图。

视图架构如下:

view ProgramSummary {
     long program_id
     long value
}

program_id是唯一的,但没有row-id。我想要的只是将价值拉出来,但我似乎无法弄清楚正确的语义。

我尝试将单独的权利与OneToOne(和ManyToOne)关系映射,但它在ID之间混淆。没有将program_id标记为实体,hibernate无法处理实际的映射。

有一种简单的方法吗?它是一个只读字段,由外部进程访问,我没有任何改变架构的余地。

2 个答案:

答案 0 :(得分:1)

如果您映射第二个实体,您可能希望将列设置为updatable=falseinsertable=false,使其成为只读。

但是,为什么不直接从ProgramSummary中选择值,可能是使用纯SQL?

答案 1 :(得分:1)

您可以在程序hbm文件中使用公式来映射它。

<property name="SummaryValue" type="long" formula="(SELECT value FROM ProgramSummary WHERE ProgramSummary.program_id = id)" />

假设您的字段名为SummaryValue,此行将更新Program对象中的该字段。使用公式映射的任何字段都不可更新。