【发布时间】:2012-12-11 00:44:10
【问题描述】:
为了避免 Hibernate 给我懒惰的 javassist 实例代理而不是真正的实体,我需要做些什么改变?
更新:我正在使用 Spring 3.x 和 Hibernate 4.x
我用来加载实体的 API 是 org.hibernate.internal.SessionImpl#load(Person.class, Id) 并且映射很简单:
<?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 package="org.perfectjpattern.example.model">
<class name="Person" table="PERSON_" >
<id name="id">
<generator class="native"></generator>
</id>
<property name="name" update="false" />
<property name="age" update="true" />
</class>
<query name="Person.findByName">
<![CDATA[select p from Person p where p.name = ? ]]>
</query>
<query name="Person.findByAge">
<![CDATA[select p from Person p where p.age = :Age ]]>
</query>
</hibernate-mapping>
【问题讨论】:
-
使用急切而不是延迟加载。
-
我可以想象,但是具体什么地方需要配置,这就是OP
-
如果您向我们展示您的映射实体之一,我们可以为您提供帮助。
-
几乎 100% 的时间您都想这样做,但这是解决您遇到的问题的错误方法。您可以考虑寻求帮助来解决您的实际问题。