首页 > 解决方案 > 在 JPA 中使用 WHERE 查询实体

问题描述

我有这个实体:

@Entity
@Table
public class Terminals implements Serializable {

    private static final long serialVersionUID = 5288308199642977991L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private Long id;

    @Column
    private int merchant_id;

    @Column
    private String terminalToken;

.....
}

我尝试使用此查询:

public Terminals getTerminalToken(String terminalToken) throws Exception {
        return entityManager.find(Terminals.class, terminalToken);
    }

看起来它只选择表键。

如何选择表格列terminalToken

标签: javajpaspring-data-jpajpa-2.1

解决方案


您最好使用Spring 数据与JPA Repositories一起构建您的查询。您只需要扩展JpaRepository接口,并遵循命名约定来命名您的方法。

您的方法将如下所示:

public List<Terminal> findByTeminalToken(String TerminalToken);

否则,您将需要使用entityManager.createQuery()方法而不是entityManager.find()因为后者仅与id列一起使用。


推荐阅读