次のようなシナリオがあります。
@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;
.
.
.
}
次のようなJPASelectステートメントがあります。
SELECT a FROM Animal a;
Hibernate3.3.1を使用しています
私が見ることができるように、フレームワークは左外部結合のインスタンスを取得しAnimal
、またそれを使用します。Dog
「パーツ」のみを選択する方法はありAnimal
ますか?つまり、前のものSelect
はすべてのAnimal
s、sだけでAnimal
sではないものDog
、およびsであるものを取得しDog
ます。
全部欲しいのですが、Dog
sの場合は「動物の部分」だけを取り出したいです。
私は見つけました@org.hibernate.annotations.Entity(polymorphism = PolymorphismType.EXPLICIT)
が、私が見ることができるように、これは動物がそうでない場合にのみ機能し@Entity
ます。
どうもありがとう。