나는이 시나리오를 가지고있다 : 부모 클래스 Person, children 클래스 : Individual과 Enterprise. 나는 사람의 목록을로드하기 위해 간단한 HQL을 사용하는 경우Hibernate 4 : HQL과 상속 - 컬렉션과 자바 클래스 가져 오기
<hibernate-mapping>
<class catalog="test" name="test.Person" table="Persons">
<id name="id" type="int">
<column name="IdPerson"/>
<generator class="increment"/>
</id>
<set inverse="true" name="addresses">
<key>
<column name="IdPerson" not-null="true"/>
</key>
<one-to-many class="test.Address"/>
</set>
<set inverse="true" name="phones">
<key>
<column name="IdPerson" not-null="true"/>
</key>
<one-to-many class="test.Phone"/>
</set>
<joined-subclass name="test.Individual" table="Individuals">
<key column="IdPerson"/>
<property name="nameIndividual" type="string">
<column length="30" name="Name" not-null="true"/>
</property>
...
</joined-subclass>
<joined-subclass name="test.Enterprise" table="Enterprises">
<key column="IdPerson"/>
<property name="nameEnterprise" type="string">
<column length="30" name="Name" not-null="true"/>
</property>
...
</joined-subclass>
</class>
<class catalog="test" name="test.Address" table="Addresses">
<composite-id class="test.AddressId" name="id">
<key-many-to-one name="person" class="test.Person">
<column name="IdPerson" not-null="true"/>
</key-many-to-one>
<key-property name="id" type="int">
<column name="IdAddress"/>
</key-property>
</composite-id>
<many-to-one name="person" class="test.Person" fetch="select" insert="false" update="false">
<column name="IdPerson" not-null="true"/>
</many-to-one>
...
</class>
<class catalog="test" name="test.Phone" table="Phones">
<composite-id class="test.PhoneId" name="id">
<key-many-to-one name="person" class="test.Person">
<column name="IdPerson" not-null="true"/>
</key-many-to-one>
<key-property name="id" type="int">
<column name="IdPhone"/>
</key-property>
</composite-id>
<many-to-one name="person" class="test.Person" fetch="select" insert="false" update="false">
<column name="IdPerson" not-null="true"/>
</many-to-one>
...
</class>
</hibernate-mapping>
가 :
List result = session.createQuery("from Person as en").list();
최대 절전 모드가 다형성 확인 해결, 나는 얻을 나는이 같은 조인 서브 클래스 전략이 클래스를 매핑하고있어 개인 및 기업 객체 목록
하지만이 주소 및 전화를 포함 할 때 :
List result = session.createQuery("from Person as en left join fetch en.addresses left join fetch en.phones").list();
최대 절전 모드는 Indivual 및 엔터프라이즈 클래스의 특정 속성없이 액세스 할 수있는 사람 _ $$ _ javassist_5 개체의 목록을 반환합니다.
이것은 예상되는 동작입니까? 어떻게 해결할 수 있을까요?
미리 감사드립니다.
편집 : 프록시하지 않는 이유는 주소 및 전화 클래스 매핑을 포함했다
는 그 아이디의 복합이며, 최대 절전 모드에 의해 생성 된 와 Javassist 프록시에 대한 이유가 될 것 같다,하지만 다형성을 올바르게 해결 하시겠습니까? 심지어 hibernate가 데이터베이스로부터 모든 데이터를 얻었을 때.
내 JSF 페이지에서 javax.el.PropertyNotFoundException 오류가 발생합니다. 'test.Person _ $$ _ javassist_5'클래스에 'nameIndividual'속성이 없습니다.
감사합니다. 시간과 답변을 주셔서 감사합니다. 죄송합니다. 주소 및 전화 매핑을 생략했습니다. 이러한 클래스에 simples ids가 있으면 최대 절전 모드로 작동합니다. 그들은 실제로 합성물입니다. – vladiastudillo