Java 如何在列名中使用下划线执行JPQL查询?

Java 如何在列名中使用下划线执行JPQL查询?,java,postgresql,jakarta-ee,where-clause,jpql,Java,Postgresql,Jakarta Ee,Where Clause,Jpql,我在以下JPQL查询中遇到错误: @NamedQuery (name = "Customer.getById", query = "SELECT o FROM bub.Customer o WHERE o.user_id = :myid") [bub.Customer是@实体名称] 这是我收到的错误消息的摘录: org.hibernate.HibernateException: Errors in named queries: Customer.getById\n Caused b

我在以下JPQL查询中遇到错误:

@NamedQuery (name = "Customer.getById", query = 
"SELECT o 
FROM bub.Customer o 
WHERE o.user_id = :myid")
[bub.Customer是@实体名称]

这是我收到的错误消息的摘录:

org.hibernate.HibernateException: 
Errors in named queries: 
Customer.getById\n 
Caused by: org.hibernate.HibernateException: 
Errors in named queries: Customer.getById
当我删除WHERE子句时,Wildfly允许我部署我的web应用程序,因此我知道WHERE子句有问题。特别是因为在我的Customer表中列名是user_id,所以我认为JPQL中的下划线(_)可能有问题。我尝试将WHERE子句更改为“WHERE o.userId=:myid”,但也没有成功

我如何修复WHERE子句,使我的网站能够以正确的方式部署和工作

编辑: 相关方法如下:

public static Customer getById (final EntityManager em, final long id)
{
    return em.createNamedQuery ("Customer.getById", Customer.class).setParameter ("myid", id).getSingleResult ();
}
但我认为这不是问题所在

编辑2: 原来这就是问题所在:

@ManyToOne (fetch = FetchType.LAZY)
@JoinColumn (name = "user_id")
private User         user;
我最终将JPQL查询更改为以下内容,现在它开始工作:

@NamedQuery (name = "Customer.getById", query = 
"SELECT o 
FROM bub.Customer o 
WHERE o.user = :myid")

在JPQL中,您不使用列名,而是使用属性名(除非您注释了其他内容)

在发布实体的java代码后,tooI添加了调用查询的方法,但我认为这不是问题所在。我的代码现在不会部署,除非我删除WHERE子句,所以我认为WHERE子句是主要问题。我指的是客户类。在JPQL中,您不使用列名,而是使用属性名(除非您注释其他内容)。噢,我的天哪,非常感谢Turo。如果您可以将“在JPQL中不使用列名,而是使用属性名(除非您注释了其他内容)”作为答案,我将选择您的答案作为正确答案。非常感谢你!!!!