std*_*all 6 java polymorphism hibernate hql
我正在使用Hibernate注释来持久化我的课程.目前我正在使用以下策略来映射类
我有一个抽象类,它是Parent类,我有两个继承它的子类,Mother,Father.
我这样映射:
@MappedSuperclass
public abstract class Parent {
private int age;
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
另外两个类声明如下:
@Entity
public Class Father extends Parent {
private boolean haveMustash;
...
}
Run Code Online (Sandbox Code Playgroud)
所以基本上情况是"每班表".
现在我想创建一个Hibernate HQL语句,它将更新父级的年龄,无论它是什么类型(母亲,父亲).将使用name列查找父级,该列在两个表中都是唯一的.但我不知道只是看着这个名字,如果它是母亲或父亲.如何创建将在两个表中查找的HQL语句,并返回正确的实体进行更新?
我想到了这样的事情:(但我甚至不知道是否可能)
Parent parent = hibernateTemplate.find("from Mother,Father where name="
+ name);
Run Code Online (Sandbox Code Playgroud)
from Parent p where p.name = :name
Run Code Online (Sandbox Code Playgroud)
(未测试)。
请注意,如果它有效,它将导致两个查询,因为这两个实体没有任何共同点,除了它们从超类继承一些映射属性之外。这里没有实体继承,也没有实现每类表策略。@Entity如果 Parent 用而不是进行注释@MappedSuperClass,并且您使用 定义了继承策略,则您会这样做@Inheritance。
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |