Java jpa标准是否有效取决于db是mysql还是objectdb
当我将JPA与MySQL一起使用时,下面的查询工作正常。但是当我将它与ObjectDB一起使用时,它会抛出下面的异常Java jpa标准是否有效取决于db是mysql还是objectdb,java,jpa,criteria-api,objectdb,Java,Jpa,Criteria Api,Objectdb,当我将JPA与MySQL一起使用时,下面的查询工作正常。但是当我将它与ObjectDB一起使用时,它会抛出下面的异常 public Friendship getFriendship(String username) { CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Friendship> query = criteriaBuilder.createQuery(Frien
public Friendship getFriendship(String username) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Friendship> query = criteriaBuilder.createQuery(Friendship.class);
Root<Friendship> root = query.from(Friendship.class);
Path<String> path = root.<String>get("username");
query.where(criteriaBuilder.equal(path, username));
return em.createQuery(query).getSingleResult();
}
如上所述(如错误消息所示),缺少选择
有效的JPQL查询必须包含SELECT,否则查询不完整
一些JPA实现通过支持无选择的查询来扩展标准JPQL。这是EclipseLink。但是我认为JPA,即java接口,应该是实现盲的?实现是否重要?更正:对于我使用的
com.objectdb.jpa.Provider
版本。对于MySQL
版本,我使用的是org.eclipse.persistence.jpa.PersistenceProvider
。显然,它们都是EclipseLink
代码>执行查询之前。有一个criteriaBuilder。选择case(root)代码>选项。但是当我加上它的时候,没有什么区别。哎呀,我的错。添加查询。选择(根);我想是吧。
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: com.objectdb.o._PersistenceException: Unexpected query token 'FROM' (SELECT is expected)
root cause
com.objectdb.o._PersistenceException: Unexpected query token 'FROM' (SELECT is expected)
root cause
com.objectdb.o.UserException: Unexpected query token 'FROM' (SELECT is expected)