2013-06-02 5 views
2

Проблема в том, что я получаю пустой результат по запросу, когда мне нужно получить некоторые элементы. вот код:hibernate inested criteria empty result

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; 
    ... 
} 

Я ожидаю получить статьи конкретного автора.

@edit

 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 

Hibernate 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; 


} 

Спасибо всем за приверженность :)

+0

Я считаю, что вы должны передавать критерии корня, которые являются «критериями», а не «authorCriteria» для получения деталей. Или это была опечатка с вашей стороны? – dinukadev

+0

Я пробовал с критериями и authorCriteria. – adaniluk

+0

Можете ли вы поделиться своей структурой таблиц так же, пожалуйста? – dinukadev

ответ

1

вы передаете критерии автора вместо передачи корневых критериев. Код должен быть:

List<Article> articles = articleManager.findArticleByCriteria(criteria); 
+0

в комментариях я написал, что я пробовал citeria и authorCriteria с одинаковым результатом. – adaniluk

+1

Тогда у вас, вероятно, нет статьи в базе данных, имеющей автора с идентификатором пользователя, хранящегося в сеансе. Если вы разместили содержимое обеих таблиц , значение идентификатора пользователя в сеансе и SQL-запрос, в читаемом формате, было бы легче помочь. –

+0

http://pastebin.com/yfPz6aDb sql – adaniluk

Смежные вопросы