Hibernate 条件显示零结果,但其生成的查询 returns 正确结果
Hibernate criteria shows zero results but its generated query returns correct results
我很困惑,因为我写了以下标准 returns 结果为零,但是当我 运行 它在我的数据库上生成 SQL 查询时 returns 正确的结果。
Criteria criteria = sessionFactory.getCurrentSession()
.createCriteria(Product.class, "product")
.add(Restrictions.ilike("product.name", " %" + name + "%"))
.add(Restrictions.ilike("product.code", code))
.setProjection(Projections.property("product.name").as("name"));
List<String> st = criteria.list();
System.err.println("st size is:" + st.size());
@Entity
public class Product implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 887867468898785287L;
@Id
private String code;
@ManyToOne
@Id
private Factory factory;
private String name;
...
}
控制台输出
Hibernate:
/* criteria query */ select
this_.name as y0_
from
Product this_
where
lower(this_.name) like ?
and lower(this_.code) like ?
st size is:0
正如 Sergey Lagutin 所建议的,我想问题出在代码中 % 之前的空格。如果这不是解决方案,请检查数据库连接以确保您连接到正确的数据库。
我很困惑,因为我写了以下标准 returns 结果为零,但是当我 运行 它在我的数据库上生成 SQL 查询时 returns 正确的结果。
Criteria criteria = sessionFactory.getCurrentSession()
.createCriteria(Product.class, "product")
.add(Restrictions.ilike("product.name", " %" + name + "%"))
.add(Restrictions.ilike("product.code", code))
.setProjection(Projections.property("product.name").as("name"));
List<String> st = criteria.list();
System.err.println("st size is:" + st.size());
@Entity
public class Product implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 887867468898785287L;
@Id
private String code;
@ManyToOne
@Id
private Factory factory;
private String name;
...
}
控制台输出
Hibernate:
/* criteria query */ select
this_.name as y0_
from
Product this_
where
lower(this_.name) like ?
and lower(this_.code) like ?
st size is:0
正如 Sergey Lagutin 所建议的,我想问题出在代码中 % 之前的空格。如果这不是解决方案,请检查数据库连接以确保您连接到正确的数据库。