我面临一个奇怪的问题,无法找到解决方案。我正在尝试使用来自 MySQl db 的 Hibernate 在 Java 中加载一组对象。
这些是我的休眠映射和代码的简化版本:
<class name="org.Foo.Class1" table="class_profile" >
<cache usage="read-write"/>
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="amount" column="amount"/>
</class>
<class name="org.Foo.Class2" table="class_profile" >
<cache usage="read-write"/>
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="amount" column="amount"/>
</class>
这是我要访问的代码,对象:
public List<Class1> loadProfiles(final List<Integer> pIds)
{
return (List<Class1>)getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
return session.createQuery("from Class1 il where il.id in (:idList)")
.setParameterList("idList", pIds)
.list();
}
});
}
现在,当我运行我的代码时
List<Class1> profiles = fooService.loadProfiles(Arrays.asList(3,4));
我在列表配置文件中获得了四个对象 (而不是 2 个) -两个 Class1 对象和两个 Class2 对象。两个 Class2 对象来自哪里?