0

EJB 3 を使用しており、データベースから単純な文字列を取得しようとしていますが、このメッセージが表示されます

名前付きクエリが見つかりません: SELECT tr FROM Travauxdereseauurbain tr

これが何を意味するのかよくわかりません。

エンティティはこちら

@Entity
@Table(name="Travauxdereseauurbain")
public class Traveauxdereseauurbain implements Serializable {
    private static final long serialVersionUID = 1L;

@Id
@Column(name="idtru")
private int idtru;
@Column(name ="article")
private String article;
@Column (name="designationtraveau")
private String designationtraveau;
@Column(name="unite")
private String unite;
@Column(name="prixHTVA")
private float prixHTVA;
@Column(name="prixTTC")
private float prixTTC;
@Column (name="qtt")
private float qtt;
@Column(name="montantHTVA")
private float montantHTVA;
@Column(name="montantTTC")
private float montantTTC;


///GETTERS, SETTERS AND CONSTRUCTOR   
}

そしてDAOクラス

@Stateless
public class TravauxdereseauurbainDAO {     

    @PersistenceContext
    private EntityManager em;       

    public Traveauxdereseauurbain affichernimpr()
    {


      Query q =em.createNamedQuery("SELECT tr FROM Travauxdereseauurbain tr");

      return  (Traveauxdereseauurbain) q.getResultList().get(0);
    }
}

最後に、エラーメッセージは次のとおりです。

Servlet.service()" pour la servlet Faces Servlet a généré une exception: java.lang.IllegalArgumentException: Named query not found: SELECT tr FROM Travauxdereseauurbain tr

よろしくお願いします

4

3 に答える 3

2

正しいメソッドを呼び出していません。em.createQueryを呼び出す必要があります。

于 2013-11-08T15:00:22.073 に答える
0

createNamedQuery を使用して、コンパイル済みの HQL を取得してクエリを実行しています。このように、クエリの名前とクエリのコンテンツをドメイン オブジェクトに配置できます。

@NamedQuery(name = "aName", query="aHql")
public class Traveauxdereseauurbain implements Serializable {

それからあなたのダオで

em.createNamedQuery("aName);
于 2013-11-08T15:02:26.423 に答える
-1

クエリはオブジェクトのリストを返します

 public List<Traveauxdereseauurbain> affichernimpr() {       
            Query query = em.createNamedQuery(""SELECT tr FROM Travauxdereseauurbain tr");
            return (List<Traveauxdereseauurbain>) query.getResultList();
于 2013-11-08T15:06:55.943 に答える