我想将一个值对象添加到映射类,其中一列是固定的,具体取决于包含该组件的类。我怎么能这样做?
<component name="aComponent">
<property name="abc" column="cde"/>
<property name="xyz" value="FIXED"/>
</component>
不幸的是,value属性不存在。还有另一种方法可以将常量值应用于属性吗?
提前致谢。
答案 0 :(得分:4)
您应该使用公式,例如
<property name="xyz" formula="1" type="big_decimal"/>
来自Java Persistence with Hibernate,ch。 4.4.1:
每次从中检索实体时,都会评估给定的SQL公式 数据库(而不是在任何其他时间,所以如果其他的结果可能会过时 属性被修改)。该属性没有列属性(或子元素) 并且永远不会出现在SQL
INSERT
或UPDATE
中,只会出现在SELECT
中。公式 可以引用数据库表的列,它们可以调用SQL函数, 它们甚至可能包含SQL子选择。 SQL表达式传递给 底层数据库原样;这是一个很好的机会将您的映射文件绑定到 特定的数据库产品,如果您不小心并依赖特定于供应商 运营商或关键词。