我有两张桌子
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
从逻辑上讲,这看起来不合适。任何帮助将不胜感激。
谢谢