(Hibernate 3.6,Mysql 5)
我有一个名为'Program'的映射类(正常工作)。
我还有一个每天都会使用汇总统计信息更新的视图。
视图架构如下:
view ProgramSummary {
long program_id
long value
}
program_id是唯一的,但没有row-id。我想要的只是将价值拉出来,但我似乎无法弄清楚正确的语义。
我尝试将单独的权利与OneToOne(和ManyToOne)关系映射,但它在ID之间混淆。没有将program_id标记为实体,hibernate无法处理实际的映射。
有一种简单的方法吗?它是一个只读字段,由外部进程访问,我没有任何改变架构的余地。
答案 0 :(得分:1)
如果您映射第二个实体,您可能希望将列设置为updatable=false
和insertable=false
,使其成为只读。
但是,为什么不直接从ProgramSummary中选择值,可能是使用纯SQL?
答案 1 :(得分:1)
您可以在程序hbm文件中使用公式来映射它。
<property name="SummaryValue" type="long" formula="(SELECT value FROM ProgramSummary WHERE ProgramSummary.program_id = id)" />
假设您的字段名为SummaryValue,此行将更新Program对象中的该字段。使用公式映射的任何字段都不可更新。