0

说我有这张桌子

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

过去我用过

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

但是这种情况下的主键是自动递增的,是否可以使用其他列(例如 first_name 和 last_name)来获取一行以获取主键以及其他值?

4

2 回答 2

2

您可以像这样创建 NamedQuerry:

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

并且可以像这样为“first_name”分配一个值:

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

您可以阅读此文档

于 2016-04-27T09:55:54.317 回答
1

使用entityManager 的createQuerycreateNativeQuery方法。

createQuery你必须使用语法JPQL和 with createNativeQuery,你必须使用标准的 SQL 语法。

例如 :

Query query = EntityManager.createQuery("select * from person p where p.first_name = :fname");
17.
query.setParameter("fname", firstName);
Person p = query.getSingleResult();
于 2016-04-27T09:47:19.877 回答