一张合同表 一张样品表 一对多关系
现在碰到的问题是每次查询样品表都会把合同也一起查出来
但是查合同就不会拉出样品
hibernate配置是这样的 请大家帮我看看有什么问题
合同
<class lazy="true" name="com.test.webapp.model.Contract" table="t_contract">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="contractId" type="java.lang.String">
<column name="contract_id" length="25" unique="true" not-null="true" />
</property>
<set name="contractSamples" inverse="true">
<key column="contract_id" property-ref="contractId" not-null="true" />
<one-to-many class="com.test.webapp.model..LimsDeteContractSample" />
</set>
</class>
样品
<class lazy="true" name="com.test.webapp.model.ContractSample" table="t_contract_sample">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="contractSampleId" type="java.lang.String">
<column name="contract_sample_id" length="25" unique="true" not-null="true" />
</property>
<many-to-one name="contract" property-ref="contractId" class="com.test.webapp.model.Contract" lazy="proxy">
<column name="contract_id" length="25" not-null="true" />
</many-to-one>
</class>
我想是不是因为外键的关系 对应的不是合同的id 而是contractId
现在碰到的问题是每次查询样品表都会把合同也一起查出来
但是查合同就不会拉出样品
hibernate配置是这样的 请大家帮我看看有什么问题
合同
<class lazy="true" name="com.test.webapp.model.Contract" table="t_contract">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="contractId" type="java.lang.String">
<column name="contract_id" length="25" unique="true" not-null="true" />
</property>
<set name="contractSamples" inverse="true">
<key column="contract_id" property-ref="contractId" not-null="true" />
<one-to-many class="com.test.webapp.model..LimsDeteContractSample" />
</set>
</class>
样品
<class lazy="true" name="com.test.webapp.model.ContractSample" table="t_contract_sample">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="contractSampleId" type="java.lang.String">
<column name="contract_sample_id" length="25" unique="true" not-null="true" />
</property>
<many-to-one name="contract" property-ref="contractId" class="com.test.webapp.model.Contract" lazy="proxy">
<column name="contract_id" length="25" not-null="true" />
</many-to-one>
</class>
我想是不是因为外键的关系 对应的不是合同的id 而是contractId
<set name="contractSamples" inverse="true">
<key column="contract_id" property-ref="contract" not-null="true" />
<one-to-many class="com.test.webapp.model..LimsDeteContractSample" />
</set>样品
<many-to-one name="contract" class="com.test.webapp.model.Contract" lazy="proxy">
<column name="contract_id" length="25" not-null="true" />
</many-to-one>试一下吧
那样改的话是不是还是这样?
样品表中的外键是指向合同表的contractId的
但是合同表的主键是id
并不是contractId
所以并不是你说的样品表的外键指向合同表的主键
但是样品表里的外键并不是指向合同表的id的
而是contractId
是不是这个原因才导致了lazy失效?
迷惑
因为另外一个系统所有的外键都用了id
lazy是没问题的
(2)JAVA示例代码-使用ObjectBinderpublic String insertCountDown(Map request) {...request.put("class", CountDown.class.getName());Map dayType = (Map)request.get("dayType");dayType.put("class", HolidayType.class.getName());
ObjectBinder binderCountDown = new ObjectBinder();CountDown cd = (CountDown) binderCountDown.bind(request);
ObjectBinder binderHolidayType = new ObjectBinder();HolidayType ht = (HolidayType)binderHolidayType.bind(dayType);return cdm.insertCountDown(cd);}
只需要给你的主表..也就是一对多的一表中...加一个lazy=‘false’就解决了..
我只是个小小的coding人员...
你的实体类里面有对方对象的set方法