【发布时间】:2012-11-01 22:37:31
【问题描述】:
我有一个场景如下:
@Entity
@Table(name = "ANIMAL")
@Inheritance(strategy = InheritanceType.JOINED)
public class Animal implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "S_ANIMAL")
@SequenceGenerator(name = "S_ANIMAL", sequenceName = "S_ANIMAL", allocationSize = 1)
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
.
.
.
}
作为子类:
@Entity
@Table(name = "DOG")
public class Dog extends Animal {
private static final long serialVersionUID = -7341592543130659641L;
.
.
.
}
我有一个这样的 JPA Select 语句:
SELECT a FROM Animal a;
我使用的是 Hibernate 3.3.1
正如我所见,框架使用左外连接检索Animal 和Dog 的实例。
有没有办法只选择“部分”Animal?我的意思是,之前的Select 将得到所有的Animals,那些只有Animals 但不是Dogs 的那些以及那些Dogs 的。
我想要所有这些,但对于Dogs,我只想检索它们的“动物部分”。
我找到了@org.hibernate.annotations.Entity(polymorphism = PolymorphismType.EXPLICIT)
但正如我所见,这只有在 Animal 不是 @Entity 时才有效。
非常感谢。
【问题讨论】:
标签: java hibernate jpa class-hierarchy