2015-01-31 16 views
0

我有一個使用createNamedQuery從數據庫收集對象的問題,雖然它們在那裏。createNamedQuery不返回數據庫中的對象,即使有

業務類:

Article article; 
     try{ 
      TypedQuery<Article> query = em.createNamedQuery("Article.findByTitle", Article.class); 
      query.setParameter("articleTitle",title); 
      article = query.getResultList().size()==1 ? query.getResultList().get(0) : null; 
     } catch (NoResultException e) { 
      throw new NoResultException(); 
     } 

實體類:

@Entity 
@Table(name = "article") 
@XmlRootElement 
@NamedQuery(name = "Article.findByTitle", query = "SELECT a FROM Article a WHERE a.articleTitle = :articleTitle") 
public class Article implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Basic(optional = false) 
    @Column(unique = true, name = "article_id") 
    private Integer articleId; 

    @Basic(optional = false) 
    @Column(name = "article_title") 
    private String articleTitle; 

    . 
    . 
    . 
} 

在控制檯登錄該查詢:

INFO [stdout] (default task-15) Hibernate: select article0_.article_id as article_1_0_, article0_.article_date as article_2_0_, article0_.article_short_content as article_3_0_, article0_.article_title as article_4_0_, article0_.article_url as article_5_0_ from article article0_ where article0_.article_title=? 

EntityManager的正常工作,因爲執行持續存在或合併

回答

0

試着做一個調試。你有這樣一行:

article = query.getResultList().size()==1 ? query.getResultList().get(0) : null; 

也許你得到的查詢不止一個結果,如果出現這種情況的代碼行,使文章無效。 你也可以嘗試:

List<Article> articles; 
     try{ 
      TypedQuery<Article> query = em.createNamedQuery("Article.findByTitle", Article.class); 
      query.setParameter("articleTitle",title); 
      articles = query.getResultList(); 
     } catch (NoResultException e) { 
      throw new NoResultException(); 
     } 

getResultList()返回對象的列表,因爲你有TypedQuery可以初始化有條

名單
相關問題