外键表的hbm.xml配置: <class name="pojo.DorkingInfo" table="DorkingInfo" schema="dbo" catalog="TraceSystem">
<id name="dorkingNumber" type="java.lang.Integer">
<column name="DorkingNumber" />
<generator class="identity" />
</id>
<set name="productTraceInfos" inverse="true">
<key>
<column name="DorkingNumber" />
</key>
<one-to-many class="pojo.ProductTraceInfo" />
</set>
</class>
主键表的hbm.xml配置:
<many-to-one name="dorkingInfo" class="pojo.DorkingInfo" fetch="select" outer-join="true" lazy="false">
<column name="DorkingNumber" />
</many-to-one>DAO层的方法:
public List findByExample(Object object) {
// TODO Auto-generated method stub
try {
return this.getHibernateTemplate().findByExample(object);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}Action里的代码1:
String number = (String) request.getParameter("dorkingNumber");//获取外键表里的一个值
ProductTraceInfo pInfo = new ProductTraceInfo();
DorkingInfo dk = new DorkingInfo();
dk.setDorkingNumber(new Integer(number));//设置外键表映射的POJO里的值
pInfo.setDorkingInfo(dk);
List list = service.findByExample(pInfo);//根据主键表POJO查询
System.out.println(list.size());//我外键表里只有一条DorkingNumber为1的记录,我想的是输入1之后查出这条记录
//但是无论我输入什么数,这里都会把那条仅有的记录查出来,也就应该是程序把主键表里的所有记录都读了
//请问这个我要怎么做?
<id name="dorkingNumber" type="java.lang.Integer">
<column name="DorkingNumber" />
<generator class="identity" />
</id>
<set name="productTraceInfos" inverse="true">
<key>
<column name="DorkingNumber" />
</key>
<one-to-many class="pojo.ProductTraceInfo" />
</set>
</class>
主键表的hbm.xml配置:
<many-to-one name="dorkingInfo" class="pojo.DorkingInfo" fetch="select" outer-join="true" lazy="false">
<column name="DorkingNumber" />
</many-to-one>DAO层的方法:
public List findByExample(Object object) {
// TODO Auto-generated method stub
try {
return this.getHibernateTemplate().findByExample(object);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}Action里的代码1:
String number = (String) request.getParameter("dorkingNumber");//获取外键表里的一个值
ProductTraceInfo pInfo = new ProductTraceInfo();
DorkingInfo dk = new DorkingInfo();
dk.setDorkingNumber(new Integer(number));//设置外键表映射的POJO里的值
pInfo.setDorkingInfo(dk);
List list = service.findByExample(pInfo);//根据主键表POJO查询
System.out.println(list.size());//我外键表里只有一条DorkingNumber为1的记录,我想的是输入1之后查出这条记录
//但是无论我输入什么数,这里都会把那条仅有的记录查出来,也就应该是程序把主键表里的所有记录都读了
//请问这个我要怎么做?
ProductTraceInfo pInfo = new ProductTraceInfo();
和他的子对象:
DorkingInfo dk = new DorkingInfo();
然后设置子对象的值:
dk.setDorkingNumber(new Integer(number);
把子对象加到:ProductTraceInfo中:
pInfo.setDorkingInfo(dk);
然后查询:
List list = service.findByExample(pInfo);
应该只查出我对应的单条记录才对啊.昨天又加了两条记录进去,无论我输入什么,甚至是不存在的number号,它都把所有记录读出来了.郁闷死了.请大家千万帮忙啊!就算是发个类似的示例代码给我看看也行
<set name="productTraceInfos" inverse="true" cascade="all">
<key>
<column name="DorkingNumber" />
</key>
<one-to-many class="pojo.ProductTraceInfo" />
</set>这样Hibernate会自动维护他们之间的级联关系的