Hibernate子类查询:Java.lang.object无法强制转换为ERROR

时间:2014-08-05 15:48:53

标签: java hibernate inheritance casting

我有三个Java类, A ,它是父类, B& C 是A的子类。我有一个用于A的Hibernate映射文件,其中我已经映射了B& C使用 joined-subclass 。现在,当我尝试查询 C 时,我得到 [Ljava.lang.Object;无法投射到A 。 Hibernate生成的查询是正确的,但为什么它不允许转换为A?

我尝试过以下查询,都会导致同样的错误。

session.createQuery("from Request as req inner join req.category where req.class=Externalrequest and req.requestId=:id");

session.createQuery("from ExternalRequest as ereq inner join ereq.category where ereq.requestId=:id");

其中Request是父类和ExternalRequest& InternalRequest是子类。

这是我的映射文件的基本结构

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="Request" table="request" schema="public">
    <id name="requestId" type="integer">
        <column name="request_id" />
        <generator class="sequence" >
            <param name="sequence">request_request_id_seq</param>
        </generator>
    </id>


    <many-to-one name="category" column="category"  class="RequestCategory" />


     <joined-subclass name="ExternalRequest" table="external_request">
            <key column="request_id"/>
            .........

     </joined-subclass>

      <joined-subclass name="InternalRequest" table="internal_request">
            <key column="request_id"/>
            .......
     </joined-subclass>
</class>

1 个答案:

答案 0 :(得分:1)

[Ljava.lang.Object;是对象数组的字符串表示形式。 我认为发生的事情是您尝试将查询结果(即RequestExternalRequest的数组)分配给类Request或{{1}的变量}。