无法根据discriminator(鉴别器)来查询的有关问题解决
无法根据discriminator(鉴别器)来查询的问题解决
项目中遇到了个hibernate的criteria无法通过鉴别器作为条件查询问题,困扰了我两天希望对大家有所帮助,以下是个人的一种解决方案,有更好的办法请回帖。
hibernate实体的配置文件中是不允许property的中的column重复的,但是有一种办法可以解决在property中加入(insert=false update=false);这样鉴别器的字段映射问题就解决了(仅使用鉴别器字段无法映射到数据库持久化类中)
需要通过鉴别器对应字段查询需要加入:
查询中的criteria即可将userType作为一个限制条件来查询;
示例:criteria.add(Property.forName("userType")
.in("1,2".split(",")));
希望对大家有所帮助。
项目中遇到了个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(",")));
希望对大家有所帮助。