作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个奇怪的问题,但找不到解决方案。我正在尝试使用来自 MySQl 数据库的 Hibernate 在 Java 中加载一组对象。
这些是我的 hibernate 映射和代码的简化版本:
<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 对象来自哪里?
最佳答案
当您在两个实体之间继承时,Hibernate 需要能够判断特定数据库行应该代表哪个类。为此,您可以向表中添加一个鉴别器类,告诉它要构建哪个类来表示该行。
Class2 需要使用 <subclass/>
声明嵌套在 Class1 中的元素,指定使用什么列的值来区分它们。
详细信息在这里:http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/inheritance.html#inheritance-tableperclass
关于java - 两个不同的对象在 hibernate 中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11356073/
我是一名优秀的程序员,十分优秀!