Java 休眠嵌套条件空结果

Java 休眠嵌套条件空结果,java,hibernate,Java,Hibernate,问题是当我应该得到一些元素时,我在查询中得到的结果是空的。代码如下: DetachedCriteria criteria = DetachedCriteria.forClass(Article.class); DetachedCriteria authorCriteria = criteria.createCriteria("author"); authorCriteria.add(Restrictions.eq("id",((User)session.getAttribute("user"))

问题是当我应该得到一些元素时,我在查询中得到的结果是空的。代码如下:

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;
    ... 
}
DetachedCriteria=DetachedCriteria.forClass(Article.class);
DetachedCriteria authorCriteria=criteria.createCriteria(“作者”);
add(Restrictions.eq(“id”),((用户)session.getAttribute(“用户”)).getId());
名单

好的,我发现了问题:

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;


}
公共列表findByCriteria(DetachedCriteria){
列表文章=空;
articles=criteria.getExecutableCriteria(HibernateUtil.getSession()).list();
//返回值不是assignet do articles
归还物品;
}

感谢大家的承诺:)

您通过的是作者标准,而不是根标准。代码应为:

List<Article> articles = articleManager.findArticleByCriteria(criteria);
List articles=articleManager.findArticleByCriteria(标准);

我认为您应该传递根标准,即“标准”,而不是“authorCriteria”,以获取详细信息。或者这是您的错别字?我尝试了使用criteria和authorCriteria。您可以共享相同的表结构吗?您必须尝试打印生成的SQL以查看查询是否符合预期?您正在尝试匹配作者表的“id”吗?我认为标准是获取文章表的id。您必须使用createAlias(“author”、“auth”)为作者创建别名,然后使用Restrictions.eq(“auth.id”),((User)session.getAttribute(“User”)).getId()在您的查询评论中,我写道,我尝试了citeria和authorCriteria,但结果相同,而数据库中可能并没有存储用户ID为的作者的文章。如果以可读的格式发布这两个表的内容、会话中用户ID的值和SQL查询,将更容易提供帮助。我的想法是,表中没有任何由会话中用户ID标识的作者的书。调试以查看用户ID是什么。检查具有此ID的写入程序是否存在。检查是否存在具有此作者的书。如果这些行存在,请检查它们是否已提交。会话中的用户id与article table中的author_fk字段值相同,并且writer表中是否有具有此id的writer?您确定正在与正确的数据库/架构对话吗?当您在数据库浏览器工具中执行相同的SQL查询时,使用什么HEPPEN?也许执行查询的代码是错误的。显示
articleManager.findArticleByCriteria()
的代码。
List<Article> articles = articleManager.findArticleByCriteria(criteria);