2016-08-24 6 views
1

でテーブルに参加します。JPAは、私は、このようなSQLクエリを有するSELECT

JPQLクエリでこれを複製する方法はありますか?ここで

はEntityクラスの骨子である、それは非常に簡単です:ちょうどあなたの質問を読ん

@Entity 
@Table(name = "MY_TABLE") 
@XmlRootElement 
public class MyTable implements Serializable { 


    private BigDecimal tableId; 
    private String name; 
    private Date createdDate; 

    // ... 

    @Id 
    @Basic(optional = false) 
    @Column(name = "TABLE_ID") 
    @GeneratedValue(generator = "TBL_ID_SEQ") 
    public BigDecimal getTableId() { 
    return tableId; 
    } 

    @Basic(optional = false) 
    @Column(name = "NAME") 
    public String getName() { 
    return name; 
    } 

    @Basic(optional = false) 
    @Column(name = "CREATED_DATE", insertable = false) 
    @Temporal(TemporalType.TIMESTAMP) 
    public Date getCreatedDate() { 
    return createdDate; 
    } 

    // ... getters/setters 

} 
+0

あなたのクラスは?なぜなら、JPQLはテーブル/カラムではなくクラス/フィールドを指向していることを知っているからです。 –

+0

私はそれを知っていました。私は正直に言ってjpaにはかなり新しく、まだjpqlに慣れているわけではありません。エンティティクラスはmyTableになり、私が参加しようとしている名前フィールドは文字列です。おそらく、これは直接行うことができるものではありませんか? – user5668766

+0

多分、最大の日付と名前フィールドを返すだけの別のエンティティクラスが必要ですか?同じエンティティで試すのではなく – user5668766

答えて

0

私はあなたが別のエンティティを必要としないと思います。 JPAのエンティティは、SQLのテーブルと同じです。通常、エンティティとテーブルの間には1対1の関係があります。 JPQを使用してクエリを呼び出す方法を知っているだけです。ステートメントを呼び出すエンティティマネージャが必要です。あなたがポンポンファイル、または設定のjavaファイルに永続化ユニット、すなわちを定義する必要が

EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenceUnit"); EntityManager em = emf.createEntityManager();

。あなたはこれが唯一の短い例である

List<object> resultOfMyQuery = q.getResultList();

使用してリストを受け取ることになりますあなたの実体に関しては

Query q = em.createQuery("Your query in sql syntax as a string object");

をし、クエリを呼び出した:だからあなたはこのような何かをコーディングする上で行くことができます行わ。しかし、うまくいけばあなたが探すために流行語を持っている;)

関連する問題