2016-04-27 4 views
0

は私が主キーが自動インクリメントされているときにJPA(EclipseLink)を使用してDBから特定の「行」を取得するにはどうすればよいですか?

Person person = EntityManager.find(Person.class, primaryKey); 

を使用していた。しかし、このインスタンス内の主キーが自動インクリメントされ、過去には、このテーブル

CREATE TABLE person(
    person_id INT AUTO_INCREMENT PRIMARY KEY, 
    first_name VARCHAR(50), 
    last_name VARCHAR(50), 
    x_cordinates INT, 
    y_cordinates INT 
); 

があると、それが戻って他のcolumsを使用して行を取得することが可能ですfirst_nameとlast_nameのように、他の値と一緒にプライマリキーを取得しますか?

答えて

1

使用方法createQueryまたはentityManagerのcreateNativeQueryです。

createQueryではJPQLの構文を使用し、createNativeQueryでは標準のSQL構文を使用する必要があります。あなたがそのようなNamedQuerry作成することができます

Query query = EntityManager.createQuery("select * from person p where p.first_name = :fname"); 
17. 
query.setParameter("fname", firstName); 
Person p = query.getSingleResult(); 
2

:たとえば

query.setParamter("fist_name", "%name%"); 

次のことができます。

@NamedQuery(name="person.findAll", query="SELECT p FROM Person p WHERE like :first_name") 

をし、値を割り当てることができるような "FIRST_NAME" へこのdocumentationを読んでください。

関連する問題