0
私は、次のJPQLクエリでエラーを取得しています:カラム名のアンダースコアを使用してJPQLクエリを実行するにはどうすればよいですか?
@NamedQuery (name = "Customer.getById", query =
"SELECT o
FROM bub.Customer o
WHERE o.user_id = :myid")
[bub.Customerは@Entity名]
をこれは私が受けていたエラーメッセージの抜粋です:
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句を修正してウェブサイトを展開し、正しい方法で動作させるにはどうすればよいですか?
EDIT: 関連する方法はこれです:
public static Customer getById (final EntityManager em, final long id)
{
return em.createNamedQuery ("Customer.getById", Customer.class).setParameter ("myid", id).getSingleResult();
}
私はこれはしかし、問題はないと思います。
EDIT2: これが問題だっ判明:
@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")
エンティティのjavaコードも投稿します – Turo
私はクエリを呼び出すメソッドを追加しましたが、 atは問題です。 WHERE句を削除しない限り、私のコードはすぐには展開されないので、WHERE句が主な問題だと思います。 – CSLearner
私はCustomerクラスを意味しました.JPQLでは列名は使用しませんでしたが、属性名(何か他のものに注釈を付けない限り) – Turo