java.lang.IllegalArgumentException : Named query not found: 异常

标签 java jpa ejb-3.0 entitymanager

我得到了以下代码

@Stateless
public class BondecomandeDAO {

    @PersistenceContext
    private EntityManager em;

    public Bondecommande findBCbyid(int id)
    {
         Query q =em.createNamedQuery("select bc from Bondecommande bc where bc.idbc = :idbc");
         q.setParameter("idbc", id);
         return  (Bondecommande) q.getResultList().get(0);
     }
}

@Entity
@Table(name="bondecommande")
public class Bondecommande  implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="idbc")
    private int idbc;
    @Column(name="devise")
    private String devise;
    @Column(name="modepaiement")
    private String modepaiement;
    @Column(name="modelivraison")
    private String modelivraison;
    @Column(name="delaipaiement")
    private int delaipaiement;

      ////other attributes , getters and setters 
}

当我尝试运行函数 findBCbyid(int id) 时出现此错误

java.lang.IllegalArgumentException: Named query not found: select bc from Bondecommande bc where bc.idbc = :idbc

虽然我在另一个项目中使用了这个命名查询并且它有效,但这里可能有什么问题?

最佳答案

使用 em.createQuery(... 而不是 em.createNamedQuery()

如果您使用命名查询(我会推荐),您必须将查询放在实体类的 @NamedQuery 注释中。

关于java.lang.IllegalArgumentException : Named query not found: 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20497816/

相关文章:

java - Java 中的单词列表生成器、堆大小错误

java - 更好的股票代码 hashCode 函数?

java - 由于 Cassandra 没有事务并且所有语句都是原子的,因此如果需要,如何模拟回滚?

java - 使用 Berkeley DB API 作为 Spring+JPA 应用程序 (DB2) 的缓存解决方案

java - 使用 JPA 注释方法的 hibernate Maven 原型(prototype)

java - 基于 POJO 生成 EJB3 带注释的 Bean

java - Gson json获取结果

java - 无法弄清楚如何解决 javax.persistence.PersistenceException

java - 使用 JPA EntityManager 批量插入

java - EJB 3.x onMessage() 与@Timeout 事务上下文