java – 关于超类属性的Hibernate查询
发布时间:2020-12-15 02:27:36 所属栏目:Java 来源:网络整理
导读:首先,请原谅我在 Java和Hibernate中的无知,我正在研究不同的ORM解决方案,而不是Java程序员. 1)是否可以将以下类层次结构映射到数据库表,Person.name和Employee.name指向不同的列? abstract public class Person { private String name;}public class Employ
首先,请原谅我在
Java和Hibernate中的无知,我正在研究不同的ORM解决方案,而不是Java程序员.
1)是否可以将以下类层次结构映射到数据库表,Person.name和Employee.name指向不同的列? abstract public class Person { private String name; } public class Employee extends Person { private String name; } 2)假设1)的答案是肯定的,有没有办法创建一个HQL或Criteria查询,要求Hibernate返回Employee对象,并在Person.name上有一个标准? 像这样的东西: SELECT e FROM Employee e WHERE e.super.name = "test"; 解决方法
1)是的.这可以通过MappedSuperclass完成,并注释您的列
@MappedSuperclass abstract public class Person { @Column(name="PERSON_NAME") private String name; } @Entity public class Employee extends Person { @Column(name="EMPLOYEE_NAME") private String name; } 2)否.不改变Person或Employee之一的属性名称.但是,您可以使用该名称查询所有人员对象,并将结果强制转换为Employees.另一种选择是使用Native SQL来查询所需的列,这可能也不太理想. SELECT p FROM Person p WHERE p.name = "test"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |