최대 절전 모드 envers를 사용할 때 이상한 속성 해결 오류를 유발할 수있는 것은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/19839558

문제

최대 절전 모드가 패키지 경로를 해결하려고 시도하고 그렇게하는 동안 실패 할 수있는 것 :

Exception in thread "Timer-9" org.hibernate.QueryException: could not resolve property: codeto of: citylist_AUD [select new list(ee, e) from citylist_AUD ee, ee.codeto.wes.Citylist_AUD e where ee.originalId.citylist_id = e.originalId.id and ee.originalId.Road_id = :Road_id and e.originalId.REV.id = (select max(e2.originalId.REV.id) from ee.codeto.wes.Citylist_AUD e2 where e2.originalId.REV.id <= :revision and e.originalId.id = e2.originalId.id) and ee.originalId.REV.id = (select max(ee2.originalId.REV.id) from road_city_AUD ee2 where ee2.originalId.REV.id <= :revision and ee.originalId.Road_id = ee2.originalId.Road_id and ee.originalId.citylist_id = ee2.originalId.citylist_id) and ee.REVTYPE != :delrevisiontype and e.REVTYPE != :delrevisiontype]
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.toType(AbstractEntityPersister.java:1465)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
at org.hibernate.hql.ast.tree.FromReferenceNode.recursiveResolve(FromReferenceNode.java:101)
at org.hibernate.hql.ast.tree.FromReferenceNode.recursiveResolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.recursiveResolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.recursiveResolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.recursiveResolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromElementFactory.evaluateFromElementPath(FromElementFactory.java:172)
at org.hibernate.hql.ast.tree.FromElementFactory.createFromElementInSubselect(FromElementFactory.java:134)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:107)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:327)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3441)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3325)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:733)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:584)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4479)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1975)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:256)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
at org.hibernate.envers.entities.mapper.relation.query.TwoEntityQueryGenerator.getQuery(TwoEntityQueryGenerator.java:128)
at org.hibernate.envers.entities.mapper.relation.lazy.initializor.AbstractCollectionInitializor.initialize(AbstractCollectionInitializor.java:62)
at org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy.checkInit(CollectionProxy.java:50)
at org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy.iterator(CollectionProxy.java:70)
at ee.codeto.wes.Helper.getListSum(Helper.java:329)

최대 절전 모드 3.6.9를 사용하고 있습니다

두 감사 엔터티 사이의 많은 사람들 관계에 대한 감사를 소개 할 때까지 모든 것이 작동했습니다. 기본적으로 도로. 자바 :

@Audited
@Entity
@Table(name = "ROAD")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Road {
    ...
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "ROAD_CITYLIST", joinColumns = { @JoinColumn(name = "ROAD_ID") }, inverseJoinColumns = { @JoinColumn(name = "CITYLIST_ID") })
    @Fetch(FetchMode.SUBSELECT)
    @Cache(usage = CacheConcurrencyStrategy.NONE)
    private Set<CityList> citylists;
    ...
}

나는 같은 논리로 비슷한 작은 테스트를했고 성공했습니다. 나는 올바른 방향을 향한 도움이나 멍청함에 대해 정말로 감사 할 것입니다. 추가 정보가 필요한 경우 이름을 지정하면 제공 할 수 있습니다.

도움이 되었습니까?

해결책

내 자신의 질문에 대답 :

버그는 3.6의 최대 절전 모드 인 Envers와 함께 있었는데, 어떤 경우에는 에스토니아 도메인 이름 (예 : ee.codeto.foo)에서 파생 된 패키지 이름에 문제가 생겼습니다. 이것은 쿼리 빌딩 중 어느 시점에서 최대 절전 모드가 "ee"를 별칭으로 사용했으며 패키지가있는 전체 클래스 이름이 사용 된 경우 (현재 항상) 최대 절전 모드는 "ee 다음에 다음 부분이 패키지 이름으로 다음 부분을"EE에 사용했다는 사실로 인해 발생했습니다. "열 이름입니다.

이후의 최대 절전 모드 버전에서는이 문제가 해결됩니다. 아마도 에스토니아 도메인 이름이 아니라 별칭 사용으로 인해 발생했을 것입니다. "EE_""EE "대신 사용됩니다. 그러므로"EE와 함께 패키지를 갖는 것이 불행한 경우_ "패키지 이름의 첫 번째 부분으로서 최대 절전 모드 envers를 사용하고 다수의 매핑을 사용하고 Hibernet이 패키지와 함께 전체 클래스 이름을 사용하려고 시도하는 운이 좋지 않은 경우가 발생합니다. 이 버그에 의해 가해질 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top