Мы используем Hibernate для ORM и пытаемся отобразить столбец типа java.lang.Class.Столбец отображается правильно, но невозможно выполнить запрос, используя столбец «тип» в предложении where.
У нас есть следующий объект
@Entity
@Table(name = "my_entities")
public class MyEntity {
private Class type;
@Column(name = "type")
public Class getType() {
return type;
}
// setter
}
И метод с запросом
public MyEntity get(Class clazz) {
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(MyEntity.class);
criteria.add(Restrictions.eq("type", clazz));
return (MyEntity) criteria.uniqResult();
}
Результатом является это исключение
Caused by: org.hibernate.QueryException: Unsupported discriminator type null
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getTypedValue(CriteriaQueryTranslator.java:613) ~[CriteriaQueryTranslator.class:4.3.11.Final]
at org.hibernate.criterion.SimpleExpression.getTypedValues(SimpleExpression.java:116) ~[SimpleExpression.class:4.3.11.Final]
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getQueryParameters(CriteriaQueryTranslator.java:346) ~[CriteriaQueryTranslator.class:4.3.11.Final]
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126) ~[CriteriaLoader.class:4.3.11.Final]
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1718) ~[SessionImpl.class:4.3.11.Final]
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380) ~[CriteriaImpl.class:4.3.11.Final]