我是Hibernate标准的新手,我遇到了简单获取类的问题。 假设我们有课程:
Class A{
int id;
List<A> aList;
}
和
Class B{
A a;
(...)
}
和:
Class C{
int id;
String name;
B b;
}
我想获得List&lt; C>如果'name'喜欢'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类中看到“左外连接”。可能这就是为什么我无法加载
答案 0 :(得分:1)
如果关联为@OneToOne
或@ManyToOne
,则会有左外连接,只是因为默认情况下他们非常渴望 ToOne 拥有方。
如果您想使用此类LIKE
条款,请改为使用MatchMode.ANYWHERE
和ilike
:
add(Restrictions.ilike("nazwa", string, MatchMode.ANYWHERE))
此外,请确保要在类C
中查询的属性名为nazwa
(在代码示例中键入为name
),并且它具有正确的getter /设定器。