加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读