加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java.lang.IllegalArgumentException:找不到命名查询:

发布时间:2020-12-15 05:17:45 所属栏目:Java 来源:网络整理
导读:我得到了以下代码 @Statelesspublic 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.setP
我得到了以下代码

@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注释中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读