Nesquikk M Nesquikk M - 7 months ago 13
Java Question

How to get a specific "row" from a DB using JPA (EclipseLink) when the primary key is Auto Incremented?

Say I have this table

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


In the past I have used

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


But the primary key in this instance is auto incremented, is it possible to get a row back using the other colums such as first_name and last_name to get the primary key along with the other values ?

Answer

Use method createQuery or createNativeQuery of entityManager.

With createQuery you have to use JPQL syntax and with createNativeQuery, you've to use the standard SQL syntax.

For example :

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