我得到以下代码
@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);
}
}
and
@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:未找到命名查询:从 Bondecommande bc 中选择 bc,其中 bc.idbc = :idbc
虽然我在另一个项目中使用了这个命名查询,并且它有效,但这里可能存在什么问题?
Use em.createQuery(...
而不是 em.createNamedQuery()
如果您使用命名查询(我建议这样做),则必须将查询放置在实体类的 @NamedQuery 注释中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)