java - JPA中使用WHERE查询实体

标签 java jpa spring-data-jpa jpa-2.1

我有这个实体:

@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

最佳答案

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

您的方法将如下所示:

public List<Terminal> findByTeminalToken(String TerminalToken);

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

关于java - JPA中使用WHERE查询实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51515556/

相关文章:

java - 保存实体后 Hibernate 一对一和多对一关系的奇怪行为

hibernate - 需要帮助追踪 JPASystemException 的原因

java - 从对象的字符串表示形式确定类

java - 无法从 TemporalAccessor : {}, ISO 获取 ZoneOffset,Europe/Berlin 解析为 java.time.format.Parsed 类型的 2019-12-26

java - entityManager.createNativeQuery 不返回类型化结果

java - #Hibernate 是否有必要在保存包含它的对象之前保存属于复合键的每个对象?

mockito - 在 Spring 数据存储库上测试 Spring 声明式缓存支持的问题

java - 更改 Java printf 中的默认填充字符?

java - 更改 Java 按钮 GridBayLayout 的大小

java - 如何在 Windows 7 上设置 java_home?