【问题标题】:JPA2:i use a JoinColumn as queryparam to create a query and a exception occurred ,whyJPA2:我使用 JoinColumn 作为查询参数来创建查询并发生异常,为什么
【发布时间】:2011-11-02 17:39:36
【问题描述】:
    @JoinColumn(name = "want_uid", referencedColumnName = "id")
    @ManyToOne
    private BookUsers wantUid;
    @JoinColumn(name = "sale_uid", referencedColumnName = "id")
    @ManyToOne
    private BookUsers saleUid;
    @JoinColumn(name = "book_id", referencedColumnName = "id")

此代码来自实体 bean 我使用 want_uid 作为 queryparam 编写一个查询 .as 流:

 BookUsers bookUsers=userDA.findUserByID(wantID);
 Query query= em.createQuery("SELECT b FROM BookOrder b WHERE b.want_uid = :want_uid");
 query.setParameter("want_uid", bookUsers);

发生异常:

javax.servlet.ServletException: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Error compiling the query [SELECT b FROM BookOrder b WHERE b.want_uid = :want_uid], line 1, column 34: unknown state or association field [want_uid] of class [com.xbook.entities.BookOrder].

我找不到原因... 你能告诉我吗 ? 谢谢

【问题讨论】:

  • 你试过query.setParameter("want_uid", bookUsers.getId());吗?

标签: java jpa ejb jpa-2.0


【解决方案1】:

在查询中

b.want_uid

需要改成

b.wantUid

所以,

SELECT b FROM BookOrder b WHERE b.wantUid = :want_uid

【讨论】:

  • 哇...谢谢!问题太奇怪了...JoinColumn 的名称是 want_uid ..为什么这不是查询参数?
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 2014-08-16
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多