使用HQL

时间:2016-02-02 12:23:47

标签: java hibernate hql hibernate-criteria

我有一个场景如下

Class A {
    String id;
    List<B> lstB;
}

Class B {
    String id;
    String name;
}

Class C extends B {
    String location;
}

对于上面的映射,这里是我的Hibernate映射

<class name="A" table="A">
    <id name="id" type="java.lang.String" column="ID" length="50">
        <generator class="assigned" />
    </id>
    <set name="lstB" table="A_B" lazy="true">
        <key column="A_ID" />
        <many-to-many column="B_ID" class="B" />
    </set>
</class>

<class name="B" table="B">
    <id name="id" type="java.lang.String" column="ID" length="50">
        <generator class="assigned" />
    </id>
    <property name="name">
        <column name="NAME"/>
    </property>
    <discriminator column="DISCRIMINATOR" not-null="false" />
    <subclass name="C" discriminator-value="C">
        <property name="location">
            <column name="LOCATION"/>
        </property>             
    </subclass>
</class>

现在我想根据以下给定的参数检索BC对象的列表。

1)来自A的ID。

2)来自C的位置。

现在,如果结果对象是B的实例,那么只需添加列表,但如果它是C的实例,则必须验证在where子句中传递的位置名称。

我可以使用HQL实现这一目标吗?或者我必须使用Criteria API?我们可以从HQL本身检查对象的实例吗?

0 个答案:

没有答案