【发布时间】:2016-06-26 11:28:47
【问题描述】:
我有两个表(A 和 B):一个表是某个对象(A)的结构,另一个表是通过多对多映射(B)连接两个表 A 和表 C。在表 A 中,我有必须使用表 B 计算的列。如何使该列在休眠状态下自动计算?
主要问题:如何在 Hibernate 中将列作为查询?
更新:
我试过@Formula注解,得到org.hibernate.type.SerializationException: could not deserialize。
你对这种情况有什么想法吗?
该字段的代码如下:
@Formula("(select count(t.first_id) from " + TABLE_NAME + " as t group by t.second_id)")
private int count;
setCount(...);
... getCount();
堆栈跟踪:
org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:243)
at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:138)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:113)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:27)
at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:53)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:241)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:237)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:227)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:303)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2726)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1728)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1654)
at org.hibernate.loader.Loader.getRow(Loader.java:1543)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:727)
at org.hibernate.loader.Loader.processResultSet(Loader.java:972)
at org.hibernate.loader.Loader.doQuery(Loader.java:930)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
at org.hibernate.loader.Loader.doList(Loader.java:2611)
at org.hibernate.loader.Loader.doList(Loader.java:2594)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
at org.hibernate.loader.Loader.list(Loader.java:2418)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:109)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1716)
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363)
at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:385)
【问题讨论】:
标签: java mysql sql hibernate postgresql