爲什麼Hibernate的抱怨以下查詢:Hibernate的假設在HQL查詢參數那裏有沒有
public Set<Long> findImageVariantIdsWithOutOfBoundsDimension() {
final StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("select id from ImageVariant where ");
// imageVariantType is something like R_110X75 with 110 being max x.
// cast(substring(extracts 110.
queryBuilder.append("dimensionX > cast(substring(imageVariantType, 3, locate('X', imageVariantType) - 3), int) ");
queryBuilder.append("or ");
// imageVariantType is something like R_110X75 with 75 being max y.
// cast(substring(extracts 75.
queryBuilder.append("dimensionY > cast(substring(imageVariantType, locate('X', imageVariantType) + 1), int)");
final Query query = getEntityManager().createQuery(queryBuilder.toString());
@SuppressWarnings("unchecked")
final Set<Long> result = new HashSet<Long>(query.getResultList());
return result;
}
警告是Function template anticipated 3 arguments, but 2 arguments encountered
。但是,我的查詢既不包含標記也不包含參數。由於cast
是一個Hibernate特有的函數(JPQL中沒有字符串到int的轉換),我認爲這是一個HQL問題。
當我調試休眠的TemplateRenderer
我看到它的內部參數列表是['X', imagevaria0_.imagevarianttype]
。
一些什麼類似的問題http://solitarygeek.com/java/extracting-only-date-part-of-a-date-time-column-using-jpa-hibernate – Reddy 2011-06-27 15:10:09