0
我有以下几点:休眠忽略属性名的情况下
@Entity
public class Person {
@Id
private long id;
@Column
private String firstName;
// getters and setters
}
我想以下工作:
Criteria criteria = session.createCriteria(Person.class);
criteria.add(Restrictions.eq("firstName", "john"));
OR
criteria.add(Restrictions.eq("FIRSTNAME", "john"));
OR
criteria.add(Restrictions.eq("fiRstName", "john"));
基本上,我有一个Web服务,它允许在后端对象的筛选,我们正在试图忽略的属性的名称的情况。我不知道如何做到这一点。我搜索看着休眠文档和Hibernate的来源,但一无所获。从休眠唯一的例外是
org.hibernate.QueryException: could not resolve property FIRSTNAME (or fiRstName) of com.abc.Person
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1482)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:62)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1457)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:483)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.findColumns(CriteriaQueryTranslator.java:498)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:68)
,我不认为这种元模型方法将为我们的情况下工作。反射部分可能是一个更好的解决方案,我们可以在启动时将所有字段的缓存在内存中,避免做在每次调用反射。我没有想过这个。我将围绕浮一下,看看别人怎么想。 唯一的问题,这真的不应该是一个问题,是不同的情况下,在同一个实体或实体层次结构中的同名字段: 的firstName VS名字。 – CAL5101 2013-04-09 17:00:00