2011-10-24 3 views

答えて

1

できません。 2つの異なるクラスを同じテーブルにマップすることはできますが、それ以外の方法でマッピングすることはできません。

この制限の理由は、希望JPAプロバイダを使用すると、次のクエリで考えているんどのテーブルを知っていたか、単純です:

em.createQuery("SELECT u FROM User u"); 

しかしはあなたがすべてで基本クラスAbstractUserを作成することができますサブクラスを空にする必要があります:User、たとえばVUserです。後者の2つのクラスは、異なるテーブル/ビューへのマッピングを持ちます。 MappedSuperclassとその例を参照してください。

@MappedSuperclass 
public abstract class AbstractUser { 
    //all your columns/JPA mapping go here 
} 

@Entity 
@Table(name="USERS") 
public class User extends AbstractUser {} 

@Entity 
@Table(name="V_USERS") 
public class VUser extends AbstractUser {} 
+0

私の質問はおそらく十分正確ではありませんでした。私はビューから完全に管理されたエンティティを取得したくないのですが、 'List getUsersFromView()'のようなUserDAOメソッドです。私はネイティブクエリーと結果をエンティティクラスにマッピングすることでこれを達成できると思います。確かに、私はJPAを初めて使うので、確認します。 – alephx

関連する問題