无法根据discriminator(鉴别器)来查询的问题解决

项目中遇到了个hibernate的criteria无法通过鉴别器作为条件查询问题,困扰了我两天希望对大家有所帮助,以下是个人的一种解决方案,有更好的办法请回帖。
hibernate实体的配置文件中是不允许property的中的column重复的,但是有一种办法可以解决在property中加入(insert=false update=false);这样鉴别器的字段映射问题就解决了(仅使用鉴别器字段无法映射到数据库持久化类中)


<!--原始代码-->
<class name="User" table="user" discriminator-value="null">
<id name="id" type="long" column="userid">
<generator class="native" />
</id>
<discriminator column="usertype" type="integer" />
<class name="User" table="user" discriminator-value="null">
<id name="id" type="long" column="userid">
<generator class="native" />
</id>
<discriminator column="usertype" type="integer" />

<subclass name="Employee" discriminator-value="1">
<property name="employeeId" column="employeeid" />
</subclass>
<subclass name="Visitor" discriminator-value="3">
<property name="VisitorId" column="vsitorid" />
</subclass>
<subclass name="Contractor" discriminator-value="2">
<property name="contactNumber" column="telnumber" />
</sublass>
</class>

需要通过鉴别器对应字段查询需要加入:

<property name="userType" type="string" insert="false" update="false">
<column name="usertype"></column>
</property>


查询中的criteria即可将userType作为一个限制条件来查询;
示例:criteria.add(Property.forName("userType")
.in("1,2".split(",")));

希望对大家有所帮助。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值