2

問題は、いくつかの要素を取得する必要があるときに、クエリで空の結果が得られることです。コードは次のとおりです。

DetachedCriteria criteria = DetachedCriteria.forClass(Article.class);
DetachedCriteria authorCriteria = criteria.createCriteria("author");
authorCriteria.add(Restrictions.eq("id",((User)session.getAttribute("user")).getId()));
List<Article> articles = articleManager.findArticleByCriteria(criteria);


@Entity
@Table(name = "ARTICLES")
public class Article {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Integer id;
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "author_fk")
    Writer author;
    @Column(length = 10000)
    String content;
    String title;
    @Transient
    String shortContent;
    ... 
}

特定の著者の記事を期待しています。

@編集

        id  content                                                  date           flagEditor  flagWriter  title   author_fk   editor_fk
        30  nweINSERT INTO `WRITERS` (`USER_ID`) VALUES<br>(9)...   2013-06-02 13:14:55     0   0   new     9   NULL
        31  INSERT INTO `WRITERS` (`USER_ID`) VALUES<br>(9);IN...   2013-06-02 13:20:04     0   0   dsfsafadsf  9   NULL
        32  sdf((User)session.getAttribute("user"))((User)sess...   2013-06-02 13:35:33     0   0   frefds  9   NULL

ハイバネート SQL: http://pastebin.com/yfPz6aDb

わかりました問題が見つかりました:

public List<Article> findByCriteria(DetachedCriteria criteria){
    List<Article> articles = null;
    articles = criteria.getExecutableCriteria(HibernateUtil.getSession()).list();
//return value wasn't assignet do articles
    return articles;


}

コミットメントに感謝します:)

4

1 に答える 1

1

ルート基準を渡すのではなく、作成者基準を渡しています。コードは次のようになります。

List<Article> articles = articleManager.findArticleByCriteria(criteria);
于 2013-06-02T12:58:00.973 に答える