when compiling a fragment below crash
List <shop> products = null; Criteria criteria= session.createCriteria(shop.class); criteria.add(Restrictions.eq("id", 1)); products = criteria.list(); crash itself:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long at org.hibernate.type.descriptor.java.LongTypeDescriptor.unwrap(LongTypeDescriptor.java:36) at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:57) at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1968) at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1939) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1874) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1835) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) at org.hibernate.loader.Loader.doQuery(Loader.java:899) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) at org.hibernate.loader.Loader.doList(Loader.java:2522) at org.hibernate.loader.Loader.doList(Loader.java:2508) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) at org.hibernate.loader.Loader.list(Loader.java:2333) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1662) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374) but the problem is present only if the id field, because if there is:
criteria.add(Restrictions.eq("name", "clara")); then everything is fine. The entry with the name Clara is present as well as the entry with id equal to 1 How to treat?
PS Initially, Karsh was impressed by the fact that in the id code it was indicated as a long if you replace it with an int then everything is fine, not counting the work with arrays, the option with an array
int []mas= {1, 2, 3, 4, 5, 6}; Criteria criteria= session.createCriteria(shop.class); criteria.add(Restrictions.eq("id", mas)); products = criteria.list(); crash:
java.lang.ClassCastException: [I cannot be cast to java.lang.Integer at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36) at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:57) at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1968) at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1939) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1874) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1835) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) at org.hibernate.loader.Loader.doQuery(Loader.java:899) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) at org.hibernate.loader.Loader.doList(Loader.java:2522) at org.hibernate.loader.Loader.doList(Loader.java:2508) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) at org.hibernate.loader.Loader.list(Loader.java:2333) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1662) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
1for1L. - enzocriteria.add(Restrictions.eq("id", (Long)parm));- StateItPrimitive