hibernate any元素在sqlserver中的使用

any元素可以把pojo的一个属性根据一个类型字段映射分别成不同的类。我的项目原来是Oracle数据库,现在换成sqlserver。对any元素的字段的查询总是报错。我看到生成的Sql语句类似于。(prop_type,prop_id) in ((?,?)).我把sql语句在oracle就可正常执行。想来应该SqlServer不支持这种语法。我换了种方法即可正常查询。
 例如,hbm.xml配置 
 

<any name="object" meta-type="character" id-type="long" cascade="all">
<meta-value value="O" class="One"/>
<meta-value value="M" class="Many"/>
<column name="clazz" length="100"/>
<column name="gen_id"/>
</any>
  

查询语句可以写为
session.find(
"from Bar bar where bar.object.id = ? and bar.object.class = ?",
new Object[] { oid, new Character('O') },
new Type[] { Hibernate.LONG, Hibernate.CHARACTER }
oid 是one类的主键字段。这里object的类型为One。因为type=o(字母o).
object.id 表示引用对象的主键,
object.class 表示引用对象的类型meta-value 的value值

这样就可以进行正常查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值