0

これはうまくいくようですが、誰かにこれを確認してもらいたいです:

エンティティの基本クラス BaseEntity があります。

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class BaseEntity {
...
}

次に、BaseEntity から拡張された A と B と C など、いくつかのエンティティがあります。さらに、次のように定義された単一の JPARepository があります。

JPARepository<BaseEntity, Long>

このリポジトリを使用して、戻り値の型を変更するだけで、テーブル A、B、または C を個別にクエリできるようになりました。例えば:

public List<B> findBsByNameContaining(String name);

テーブル B からのみ行を選択するクエリになります。

これは本当にそれがどのように機能するのですか?

4

1 に答える 1

1

リポジトリ インターフェース レベルで宣言したタイプのサブタイプを指定すると、それを使用してクエリが実行されます (基本的には trigger をem.createQuery(typeReturnedByTheMethod)参照)。返されたタイプがリポジトリによって管理されるドメイン クラスのサブタイプでない場合でも、プレーンなドメイン タイプを使用します。

于 2013-03-20T15:48:36.847 に答える