[JIRA] (HBX-2415) Hibernate default schema in @Filter conditions
by Raoua KHATERCHI (JIRA)
Raoua KHATERCHI ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=63482cf... ) *created* an issue
Hibernate Tools ( https://hibernate.atlassian.net/browse/HBX?atlOrigin=eyJpIjoiNzczODk5YTBk... ) / Bug ( https://hibernate.atlassian.net/browse/HBX-2415?atlOrigin=eyJpIjoiNzczODk... ) HBX-2415 ( https://hibernate.atlassian.net/browse/HBX-2415?atlOrigin=eyJpIjoiNzczODk... ) Hibernate default schema in @Filter conditions ( https://hibernate.atlassian.net/browse/HBX-2415?atlOrigin=eyJpIjoiNzczODk... )
Issue Type: Bug Assignee: Koen Aers ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) Components: annotations (obsolete) Created: 29/Oct/2022 13:35 PM Priority: Major Reporter: Raoua KHATERCHI ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=63482cf... )
When I try to specify table aliases in filter conditions an exception is thrown says account object not found because I don't specify the default schema.
@Entity(name = "Account" )
@Table(name = "account" )
@SecondaryTable(name = "account_details" )
@FilterDefs({
@FilterDef(name = "activeAccountV1" , parameters = @ParamDef(name = "active" , type = " boolean " )),
@FilterDef(name = "activeAccountV2" , parameters = @ParamDef(name = "active" , type = " boolean " ))})
@Filters({
@Filter(name = "activeAccountV1" , condition = "{a}.active = :active and {ad}.deleted = false " , aliases = {
//@SqlFragmentAlias(alias = "a" , table = "account" ), --NOT OK
@SqlFragmentAlias(alias = "a" , table = "TEST.account" ), //OK
//@SqlFragmentAlias(alias = "ad" , table = "TEST.account_details" ), --NOT OK
@SqlFragmentAlias(alias = "ad" , table = "TEST.account_details" ), //OK
}),
@Filter(name = "activeAccountV2" , condition = "{a}.active = :active" , aliases = {
//@SqlFragmentAlias(alias = "a" , entity =AccountPO.class ) --NOT OK
@SqlFragmentAlias(alias = "a" , table = "TEST.account" ) //OK
})
})
public class AccountPO {
@Id
private Long id;
private Double amount;
private Double rate;
private boolean active;
@Column(table = "account_details" )
private boolean deleted;
}
As in the above code snippet I tried with entity parameter @SqlFragmentAlias( alias = "a", entity= Account.class) and I faced another exeption [PersistenceUnit: <default>] Unable to build Hibernate SessionFactory Caused by org.hibernate.MappingException: Unknown entity: Account
I think we need a way how to dynamically get the current default schema.
As a reproducer:
git clone https://github.com/raoua-eng/hibernate.git
cd hibernate
mvn clean test
( https://hibernate.atlassian.net/browse/HBX-2415#add-comment?atlOrigin=eyJ... ) Add Comment ( https://hibernate.atlassian.net/browse/HBX-2415#add-comment?atlOrigin=eyJ... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100209- sha1:d23b292 )
1 year, 7 months
[JIRA] (HHH-15645) UnknownTableReferenceExceptions in 6.1.5
by Thomas Heigl (JIRA)
Thomas Heigl ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYmQ2NGFhNzUz... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-15645?atlOrigin=eyJpIjoiYmQ2NG... ) HHH-15645 ( https://hibernate.atlassian.net/browse/HHH-15645?atlOrigin=eyJpIjoiYmQ2NG... ) UnknownTableReferenceExceptions in 6.1.5 ( https://hibernate.atlassian.net/browse/HHH-15645?atlOrigin=eyJpIjoiYmQ2NG... )
Issue Type: Bug Affects Versions: 6.1.5 Assignee: Unassigned Components: hibernate-core Created: 29/Oct/2022 09:37 AM Priority: Major Reporter: Thomas Heigl ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
We are getting UnknownTableReferenceExceptions for various queries after upgrading from 6.1.4 to 6.1.5. E.g:
Caused by: org.hibernate.sql.ast.tree.from.UnknownTableReferenceException: Unable to determine TableReference (`user_connection`) for `com.my.project.UserConnection(373713700146208).owner`
at org.hibernate.sql.ast.tree.from.LazyTableGroup.resolveTableReference(LazyTableGroup.java:256)
at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.from(EntityValuedPathInterpretation.java:318)
at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.from(EntityValuedPathInterpretation.java:232)
at org.hibernate.query.sqm.sql.internal.EntityValuedPathInterpretation.from(EntityValuedPathInterpretation.java:117)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.lambda$visitEntityValuedPath$57(BaseSqmToSqlAstConverter.java:3820)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.prepareReusablePath(BaseSqmToSqlAstConverter.java:3136)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.prepareReusablePath(BaseSqmToSqlAstConverter.java:3098)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitEntityValuedPath(BaseSqmToSqlAstConverter.java:3820)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitEntityValuedPath(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.domain.SqmEntityValuedSimplePath.accept(SqmEntityValuedSimplePath.java:62)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitComparisonPredicate(BaseSqmToSqlAstConverter.java:6529)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitComparisonPredicate(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.predicate.SqmComparisonPredicate.accept(SqmComparisonPredicate.java:104)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitJunctionPredicate(BaseSqmToSqlAstConverter.java:6333)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitJunctionPredicate(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.predicate.SqmJunctionPredicate.accept(SqmJunctionPredicate.java:74)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitWhereClause(BaseSqmToSqlAstConverter.java:2252)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:1823)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.select.SqmQuerySpec.accept(SqmQuerySpec.java:122)
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQueryPart(BaseSemanticQueryWalker.java:213)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQueryPart(BaseSqmToSqlAstConverter.java:1679)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSubQueryExpression(BaseSqmToSqlAstConverter.java:6060)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSubQueryExpression(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.select.SqmSubQuery.accept(SqmSubQuery.java:641)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitExistsPredicate(BaseSqmToSqlAstConverter.java:6867)
at org.hibernate.query.sqm.tree.predicate.SqmExistsPredicate.accept(SqmExistsPredicate.java:60)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitJunctionPredicate(BaseSqmToSqlAstConverter.java:6333)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitJunctionPredicate(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.predicate.SqmJunctionPredicate.accept(SqmJunctionPredicate.java:74)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitWhereClause(BaseSqmToSqlAstConverter.java:2252)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:1823)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.select.SqmQuerySpec.accept(SqmQuerySpec.java:122)
at org.hibernate.query.sqm.spi.BaseSemanticQueryWalker.visitQueryPart(BaseSemanticQueryWalker.java:213)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQueryPart(BaseSqmToSqlAstConverter.java:1679)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:1477)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectStatement(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.select.SqmSelectStatement.accept(SqmSelectStatement.java:199)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.translate(BaseSqmToSqlAstConverter.java:711)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:350)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:270)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:246)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:546)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:363)
at org.hibernate.query.sqm.internal.QuerySqmImpl.list(QuerySqmImpl.java:1032)
I’ll try to create a reproducer in the coming days.
( https://hibernate.atlassian.net/browse/HHH-15645#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-15645#add-comment?atlOrigin=ey... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100209- sha1:d23b292 )
1 year, 7 months