2013-08-14 2 views
0

У меня есть две таблицыHibernate: один ко многим связи, где положение

Table 1 (Parent) 
    parent_Id 
    Name 

Table2 (Child) 
    child_Id 
    Name 
    Parent_id 
    version 

Соответствующие классы

Class Parent 
{ 
    Int parentId; 
    String name; 
    Set<Child> childList; 

    @Id 
    @Column(name="PARENT_ID") 
    public int getParentId() 
    { 
     return parentId; 
    } 
    @Column(Name="NAME" 
    public String getName() 
    { 
    return name; 
    } 
    @OneToMany(mappedBy="parent",fetch=FetchType.EAGER) 
    @OrderBy("pareantId") 

    public Set<Child> getChildList() 
    { 
     return childList; 
    } 

} 

    Class Child { 
     Int childId; 
    String name; 
    Parent parent; 
    int age; 

    @Id 
    @Column(name="CHILD_ID") 
    public int getId() 
    { 
     return childId; 
    } 
    @Column(Name="NAME" 
    public String getName() 
    { 
    return name; 
    } 
    @ManyToOne 
    @JoinColumn(name = "PARENT_ID", nullable = false) 
    public A getParent() 
    { 
     return parent; 
    } 

    public getAge() 
    { 
    return age; 
    } 

} Это мой DAO класс, который работает нормально, если я просто использовать в запросе (от родителя, где parentId = 1).

@Transactional 
    public Parent getParentBy(int id) 
    { 
     Parent parent = null; 
     Session session = this.sessionFactory.getCurrentSession(); 
     try{ 
     parent =(Parent) session.createQuery("from Parent where parentId=?).setParameter(0,id).uniqueResult(); 

     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return parent; 
    } 

Когда я запускаю это, я получаю все дочерние элементы под этим родителем в наборе.

Теперь, что мне нужно сделать, если я хочу добавить предложение where для возраста в том же запросе выше? Возможно ли это? Можем ли мы написать, как этот

from Parent as a where a.parentId=? and a.childList.age> 10 

Логически это doen't выглядеть правильным. Любая помощь будет оценена.

Thanks

+0

Он смотрит прямо на меня. Это ошибка? В чем вас беспокоит? – Rafa

+0

Я получаю эту ошибку org.hibernate.QueryException: незаконная попытка разыменования коллекции [parent0_.ID.childList] с ссылкой на свойство свойства [age] [from com.test.hibernate.Parent как где a.parentId =? и a.childList.age = 10] – Jha

ответ

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