ire*_*ick 8 java hibernate hql
如果是这样,语法是什么?
假设我希望Foo的实例与Bar的所有实例无关联:在SQL中它只是:
delete from FOO_BAR_MAPPING
where FOO_ID = ?
Run Code Online (Sandbox Code Playgroud)
在HQL中,我认为它会是这样的:
delete from Bar.foos foos
where foos.id = :id
Run Code Online (Sandbox Code Playgroud)
(其中foos是Foo的映射集合)
但似乎是错的,给出:
org.hibernate.hql.ast.QuerySyntaxException: Bar.foos is not mapped
Run Code Online (Sandbox Code Playgroud)
这甚至可以用HQL吗?
要回答你的具体问题,不,据我所知,HQL是不可能的.
我想你在这里混合了SQL和HQL.在SQL中,你确实"删除"了记录,当然hibernate最终也会这样做.但是,Hibernate/HQL是从面向对象的思维模式设计的,因此在此上下文中的"删除"意味着您要删除对象,而不是关联.通常你会做以下事情:
Foo f = session.get(Foo.class, id);
f.getBars().clear();
session.merge(f);
Run Code Online (Sandbox Code Playgroud)
这将按您指定的ID检索对象,并通过清除其集合来删除所有Bar关联.显然,您必须将Foo-Bars关联映射到正确的方向才能使其工作.
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |