簡體   English   中英

即使存在以下情況,createNamedQuery也不返回數據庫中的對象

[英]createNamedQuery not return objects in the database even though there are

我在使用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正常工作,因為執行了持久性或合並

嘗試進行調試。 您有這行:

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,因此可以初始化具有文章列表的對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM