问题描述
外键表的hbm.xml配置:<classname="pojo.DorkingInfo"table="DorkingInfo"schema="dbo"catalog="TraceSystem"><idname="dorkingNumber"type="java.lang.Integer"><columnname="DorkingNumber"/><generatorclass="identity"/></id><setname="productTraceInfos"inverse="true"><key><columnname="DorkingNumber"/></key><one-to-manyclass="pojo.ProductTraceInfo"/></set></class>
主键表的hbm.xml配置:<many-to-onename="dorkingInfo"class="pojo.DorkingInfo"fetch="select"outer-join="true"lazy="false"><columnname="DorkingNumber"/></many-to-one>
DAO层的方法:publicListfindByExample(Objectobject){//TODOAuto-generatedmethodstubtry{returnthis.getHibernateTemplate().findByExample(object);}catch(Exceptione){//TODO:handleexceptione.printStackTrace();returnnull;}}
Action里的代码1:Stringnumber=(String)request.getParameter("dorkingNumber");//获取外键表里的一个值ProductTraceInfopInfo=newProductTraceInfo();DorkingInfodk=newDorkingInfo();dk.setDorkingNumber(newInteger(number));//设置外键表映射的POJO里的值pInfo.setDorkingInfo(dk);Listlist=service.findByExample(pInfo);//根据主键表POJO查询System.out.println(list.size());//我外键表里只有一条DorkingNumber为1的记录,我想的是输入1之后查出这条记录//但是无论我输入什么数,这里都会把那条仅有的记录查出来,也就应该是程序把主键表里的所有记录都读了//请问这个我要怎么做?
解决方案
解决方案二:
如果我从主键表里获取每个外键表的对象,然后设置他们里面的值.然后再保存主键表的对象,是不是hibernate就把数据自动插入到外键表里了?
解决方案三:
<many-to-one>中有一个cascade属性可以设置
解决方案四:
2楼的可以详细点么?现在急啊.
解决方案五:
如果查出主键表,然后get里面的外键表的对象,再次赋值,然后直接save主键表的对象,外键表会自动保存的
解决方案六:
现在还是查询的问题,照理来说,我创建ProductTraceInfo的对象:ProductTraceInfopInfo=newProductTraceInfo();和他的子对象:DorkingInfodk=newDorkingInfo();然后设置子对象的值:dk.setDorkingNumber(newInteger(number);把子对象加到:ProductTraceInfo中:pInfo.setDorkingInfo(dk);然后查询:Listlist=service.findByExample(pInfo);应该只查出我对应的单条记录才对啊.昨天又加了两条记录进去,无论我输入什么,甚至是不存在的number号,它都把所有记录读出来了.郁闷死了.请大家千万帮忙啊!就算是发个类似的示例代码给我看看也行
解决方案七:
不能沉啊,这个问题让我郁闷很久,就算是根据外键表的ID去查,还是把所有记录都查出来了,晕死
解决方案八:
你可以设置一下相关表的级联问题
解决方案九:
引用1楼Z8157522的回复:
如果我从主键表里获取每个外键表的对象,然后设置他们里面的值.然后再保存主键表的对象,是不是hibernate就把数据自动插入到外键表里了?
<setname="productTraceInfos"inverse="true"cascade="all"><key><columnname="DorkingNumber"/></key><one-to-manyclass="pojo.ProductTraceInfo"/></set>
这样Hibernate会自动维护他们之间的级联关系的