DWR 整合 Spring Hibernate ,业务逻辑层通过单元测试,
DWR 显示为 null
原因在于映射文件的设置,有两张表一个是商品类别表,一个是产品表
<hibernate-mapping>
<class name="com.xxx.entity.Category" table="category" catalog="test">
<id name="categoryId" type="java.lang.Integer">
<column name="categoryId" />
<generator class="identity" />
</id>
<property name="categoryName" type="java.lang.String">
<column name="categoryName" length="20" />
</property>
<property name="states" type="java.lang.String">
<column name="states" length="4" />
</property>
<property name="createDate" type="java.lang.String">
<column name="createDate" length="20" />
</property>
<set name="products" inverse="true" lazy="false">
<key>
<column name="categoryId" />
</key>
<one-to-many class="com.xxx.entity.Product" />
</set>
</class>
</hibernate-mapping>
商品的映射文件
<hibernate-mapping>
<class name="com.xxx.entity.Product" table="product" catalog="test">
<id name="productId" type="java.lang.Integer">
<column name="productId" />
<generator class="identity" />
</id>
<many-to-one name="category" class="com.xxx.entity.Category" fetch="select">
<column name="categoryId" />
</many-to-one>
<property name="productName" type="java.lang.String">
<column name="productName" length="20" />
</property>
<property name="price" type="java.lang.Float">
<column name="price" precision="12" scale="0" />
</property>
<property name="states" type="java.lang.String">
<column name="states" length="4" />
</property>
<property name="createDate" type="java.lang.String">
<column name="createDate" length="20" />
</property>
</class>
</hibernate-mapping>
解决办法:把商品类别表的 Set 映射 lazy 改为 false ,默认为true,DWR不会延迟加载。
但是这也是一个权宜之计,数据量大的情况下该法不可取啊。