我有这个实体:
@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
?
答案 0 :(得分:2)
最好与{strong> Spring data 一起使用JPA Repositories构建查询。您只需要扩展JpaRepository
接口,并遵循命名约定来命名您的方法。
您的方法将如下所示:
public List<Terminal> findByTeminalToken(String TerminalToken);
否则,您将需要使用entityManager.createQuery()
方法而不是entityManager.find()
,因为后者仅与id
列一起使用。
答案 1 :(得分:0)
如果您正在寻找纯Java(我更赞成Philipp解决方案),则可能希望查看该解决方案。 https://www.objectdb.com/java/jpa/query/criteria。很抱歉没有发布直接的解决方案,但我想为您提供消息来源还很麻烦。
顺便说一句,为什么不使用spring数据呢?容易得多