首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有自连接的Hibernate单表继承

带有自连接的Hibernate单表继承
EN

Stack Overflow用户
提问于 2014-01-16 16:47:59
回答 1查看 629关注 0票数 1

我有以下课程:

导游班:

代码语言:javascript
复制
public abstract class Guide
{
    private Long idGuide;
    private String name;

    private GuideContainer parent;
    /** GETTERS & SETTERS*/
}

GuideContainer:

代码语言:javascript
复制
public class GuideContainer extends Guide
{    
   private Guide children;
/** GETTER & SETTERS */
}

GuideFile:

代码语言:javascript
复制
public class GuideFile extends Guide
{
   private String uri;
/**GETTERS & SETTERS */
}

具有以下映射: For Guide:

代码语言:javascript
复制
<hibernate-mapping>
    <class name="Guide" table="guides" abstract="true">
        <id name="idGuide" type="integer" column="idGuide">
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String" column="name" />
        <discriminator column="type" type="java.lang.String" />

        <many-to-one class="GuideContainer" fetch="join" name="parent">
            <column name="parent" />
        </many-to-one>
    </class>
</hibernate-mapping>

GuideFile:

代码语言:javascript
复制
<hibernate-mapping>
    <subclass extends="Guide" name="GuideFile" discriminator-value="file">
        <property name="uri" type="java.lang.String" column="uri" />
    </subclass>
</hibernate-mapping>

GuideContainer:

代码语言:javascript
复制
<hibernate-mapping>
    <subclass extends="Guide" name="GuideContainer" discriminator-value="container">
        <set fetch="select" inverse="true" lazy="true" name="children" sort="unsorted" table="children">
            <key>
                <column name="parent" not-null="false" />
            </key>
            <one-to-many class="Guide" />
        </set>
    </subclass>
</hibernate-mapping>

当我试图让所有的向导和一个给定的父母

代码语言:javascript
复制
 Query query = getSession().createQuery("from Guide g where parent = :parent order by type").setParameter("parent", parent);
        List<Guide> guides= query.list();
        return guides;

我得到了以下例外:

代码语言:javascript
复制
 IllegalArgumentException occurred calling getter of Guide.idGuide

在那之后:

代码语言:javascript
复制
java.lang.IllegalArgumentException: object is not an instance of declaring class

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-16 17:28:49

解决了。查询应该是:

代码语言:javascript
复制
from Guide g where parent.idGuide = :parent order by type
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21167807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档