Hibernate 标准返回多个类
我是 Hibernate 标准的新手,在简单的获取类方面遇到了问题。 假设我们有类:
Class A{
int id;
List<A> aList;
}
和:
Class B{
A a;
(...)
}
和:
Class C{
int id;
String name;
B b;
}
我想得到 List< C>如果“名字”像“abc”。这是我的标准代码:
Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
Criteria crit = session.createCriteria(C.class);
crit.add(Restrictions.like("nazwa", "%"+string+"%").ignoreCase());
return crit.list();
我遇到了例外:
org.postgresql.util.PSQLException:错误:运算符不存在: 字符变化=整数
在由条件生成的 SQL 查询中,我可以在 C 类中包含的 A 类和 B 类上看到“左外连接”。可能这就是我无法加载的原因
I am newbie to Hibernate criteria and I got problem with simple obtain class.
Assume we have classes:
Class A{
int id;
List<A> aList;
}
and:
Class B{
A a;
(...)
}
and :
Class C{
int id;
String name;
B b;
}
I want to get List< C > if 'name' like 'abc'. Here is my criteria code:
Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
Criteria crit = session.createCriteria(C.class);
crit.add(Restrictions.like("nazwa", "%"+string+"%").ignoreCase());
return crit.list();
I got exception:
org.postgresql.util.PSQLException: ERROR: operator does not exist:
character varying = integer
In my SQL query generated by criteria I can see "left outer join" on my A and B classes that are contained in my C class. Probably that's why I cannot load
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果关联是
@OneToOne
或@ManyToOne
,则会存在左外连接,因为默认情况下它们在 ToOne 拥有方中是渴望的。如果您想使用这样的
LIKE
子句,请使用MatchMode.ANYWHERE
和ilike
相反:另外,请确保您要在类中查询的属性
C
名为nazwa
(在代码示例中输入为name
),并且它有一个适当的 getter/setter。There will be left outer joins if the associations are
@OneToOne
or@ManyToOne
, just because they are eager in the ToOne owning side by default.If you want to use such a
LIKE
clause, useMatchMode.ANYWHERE
andilike
instead:Also, make sure the property you want to query in class
C
is namednazwa
(it is typed asname
in the code example), and it has a proper getter/setter.