0

製品DBを作成する必要があります。私の製品には、価格、説明、ブランドなどの一般的な属性と、カテゴリに応じた特定の属性があります(ノートブックには、ディスプレイ サイズ、RAM、CPU などがあります)。

私の一般的なエンティティは次のとおりです。

@Entity
@Table( name="products" )
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    name="discriminator",
    discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue(value="GEN")
public class Product implements Serializable { 
   // ...
}

特定のエンティティの例を次に示します。

@Entity
@DiscriminatorValue("NB")
public class Notebook extends Product {
   // ...
}

DB 内のすべての製品のテーブル リストを表示するために、製品エンティティにクエリを実行したいと考えています。

「商品の種類」欄も表示してほしい。

製品のサブタイプを特定するにはどうすればよいですか? ノート、電話、その他の種類の製品の場合はどうですか?

jpa によって自動的に作成および管理される識別子列がありますが、逆にProductの型を取得する正しい方法は何ですか?

これが不可能な場合、目標を達成するためにモデルを再設計するにはどうすればよいですか?

4

1 に答える 1

1

識別子列を同時にプロパティとしてマップできます (編集可能にする必要はありません)。したがってProduct、別のプロパティがあります。

...
@DiscriminatorColumn(
  name="discriminator",
  discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue(value="GEN")
public class Product implements Serializable { 

  @Column(insertable=false, updatable=false)
  public String discriminator;
  ...
}

s のクエリを実行するProductと、結果セットにもNotebooks が含まれます。

于 2013-05-20T21:30:25.910 に答える