Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYmE5MzkxNGIw... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiYmE5Mz... ) HHH-16349 ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiYmE5Mz... ) ORA-00979 not a group by expression when using a polymorphic entity in HQL group by ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiYmE5Mz... )
Change By: Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
Given
* Polymorphic entities
When
* HQL with a group by using a polymorphic entity
Then
* An exception in oracle occurs {{ORA-00979 not a group by expression}}
{code:java}@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Integer id;
@Column(name = "amount")
private Integer amount;
@JoinColumn(name = "REL_ENTITY", foreignKey = @ForeignKey(name = "FK_REL_ENT_01"))
@ManyToOne
@Fetch(FetchMode.SELECT)
private RelatedEntity relatedEntity;
}{code}
{code:java}@Entity
@Table(name = "MY_TABLE")
@DiscriminatorColumn(name = "DISC_COL", discriminatorType = DiscriminatorType.INTEGER)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public abstract class RelatedEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
Integer id;
@Column(name = "RELATED_VALUE")
Integer value;
}{code}
{code:java}@Entity
@DiscriminatorValue("1")
public class ChildOneEntity extends RelatedEntity {
@Column(name = "ONLY_CHILD_ONE")
private Integer onlyChildOne;
}{code}
{code:java}@Entity
@DiscriminatorValue("2")
public class ChildTwoEntity extends RelatedEntity {
@Column(name = "ONLY_CHILD_TWO")
private Integer onlyChildTwo;
}{code}
{code:java}public class MyPojo {
Integer amount;
RelatedEntity relatedEntity;
public MyPojo(Integer amount, RelatedEntity relatedEntity) {
this.amount = amount;
this.relatedEntity = relatedEntity;
}
}{code}
{code:java} @Test
public void failingTest() throws Exception {
// BaseCoreFunctionalTestCase automatically creates the SessionFactory and
// provides the Session.
try (Session s = openSession()) {
Transaction tx = s.beginTransaction();
String hql = "select new org.hibernate.bugs.MyPojo (sum(e.amount), re ) from org.hibernate.bugs.MyEntity e join e.relatedEntity re where 1=1 group by re";
Query<MyPojo> query = s.createQuery(hql, MyPojo.class);
List<MyPojo> actual = query.list();
assertThat(actual).isEmpty();
// Verify the generated SQL
// In oracle we get ORA-00979 not a group by expression
tx.commit();
}
}{code}
{code:java}Hibernate:
select
sum(m1_0.amount),
r1_0.ID,
r1_0.DISC_COL,
r1_0.RELATED_VALUE,
r1_0.ONLY_CHILD_ONE,
r1_0.ONLY_CHILD_TWO
from
MY_TABLE m1_0
join
MY_TABLE r1_0
on r1_0.ID=m1_0.REL_ENTITY
where
1=1
group by
r1_0.ID,
r1_0.DISC_COL,
r1_0.RELATED_VALUE{code}
The generated group by does not include the {{r1_0.ONLY_CHILD_ONE}} and {{r1_0.ONLY_CHILD_TWO}}
which leads to ORA-00979 in oracle
Test case to be attached and also available here [https://github.com/ratoaq2/HHH-16349|https://github.com/ratoaq2/HHH-16349...]
( https://hibernate.atlassian.net/browse/HHH-16349#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16349#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#100219- sha1:eb3f1fe )
Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZDY4OGUxZjgw... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiZDY4OG... ) HHH-16349 ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiZDY4OG... ) ORA-00979 not a group by expression when using a polymorphic entity in HQL group by ( https://hibernate.atlassian.net/browse/HHH-16349?atlOrigin=eyJpIjoiZDY4OG... )
Issue Type: Bug Affects Versions: 6.2.0.CR3, 6.2.0.CR4 Assignee: Unassigned Created: 22/Mar/2023 03:26 AM Priority: Major Reporter: Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
Given
* Polymorphic entities
When
* HQL with a group by using a polymorphic entity
Then
* An exception in oracle occurs ORA-00979 not a group by expression
@Entity
@Table(name = "MY_TABLE" )
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID" )
private Integer id;
@Column(name = "amount" )
private Integer amount;
@JoinColumn(name = "REL_ENTITY" , foreignKey = @ForeignKey(name = "FK_REL_ENT_01" ))
@ManyToOne
@Fetch(FetchMode.SELECT)
private RelatedEntity relatedEntity;
}
@Entity
@Table(name = "MY_TABLE" )
@DiscriminatorColumn(name = "DISC_COL" , discriminatorType = DiscriminatorType.INTEGER)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public abstract class RelatedEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID" )
Integer id;
@Column(name = "RELATED_VALUE" )
Integer value;
}
@Entity
@DiscriminatorValue( "1" )
public class ChildOneEntity extends RelatedEntity {
@Column(name = "ONLY_CHILD_ONE" )
private Integer onlyChildOne;
}
@Entity
@DiscriminatorValue( "2" )
public class ChildTwoEntity extends RelatedEntity {
@Column(name = "ONLY_CHILD_TWO" )
private Integer onlyChildTwo;
}
public class MyPojo {
Integer amount;
RelatedEntity relatedEntity;
public MyPojo( Integer amount, RelatedEntity relatedEntity) {
this.amount = amount;
this.relatedEntity = relatedEntity;
}
}
@Test
public void failingTest() throws Exception {
// BaseCoreFunctionalTestCase automatically creates the SessionFactory and
// provides the Session.
try (Session s = openSession()) {
Transaction tx = s.beginTransaction();
String hql = "select new org.hibernate.bugs.MyPojo (sum(e.amount), re ) from org.hibernate.bugs.MyEntity e join e.relatedEntity re where 1=1 group by re" ;
Query<MyPojo> query = s.createQuery(hql, MyPojo.class);
List<MyPojo> actual = query.list();
assertThat(actual).isEmpty();
// Verify the generated SQL
// In oracle we get ORA-00979 not a group by expression
tx.commit();
}
}
Hibernate:
select
sum(m1_0.amount),
r1_0.ID,
r1_0.DISC_COL,
r1_0.RELATED_VALUE,
r1_0.ONLY_CHILD_ONE,
r1_0.ONLY_CHILD_TWO
from
MY_TABLE m1_0
join
MY_TABLE r1_0
on r1_0.ID=m1_0.REL_ENTITY
where
1=1
group by
r1_0.ID,
r1_0.DISC_COL,
r1_0.RELATED_VALUE
The generated group by does not include the r1_0.ONLY_CHILD_ONE and r1_0.ONLY_CHILD_TWO
which leads to ORA-00979 in oracle
Test case to be attached
( https://hibernate.atlassian.net/browse/HHH-16349#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16349#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#100219- sha1:eb3f1fe )
Vlad Mihalcea ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZmNlMGYyMGQ3... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16347?atlOrigin=eyJpIjoiZmNlMG... ) HHH-16347 ( https://hibernate.atlassian.net/browse/HHH-16347?atlOrigin=eyJpIjoiZmNlMG... ) The ORDER BY clause in a Window Function doesn't work when using multiple columns ( https://hibernate.atlassian.net/browse/HHH-16347?atlOrigin=eyJpIjoiZmNlMG... )
Issue Type: Bug Affects Versions: 6.1.7 Assignee: Unassigned Components: hibernate-core Created: 21/Mar/2023 08:27 AM Priority: Major Reporter: Vlad Mihalcea ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
The following JPQL query works just fine:
List<Post> posts = session.createQuery("""
select p
from Post p
left join fetch p.comments pc
where p.id in (
select id
from (
select
id as id,
dense_rank() over (order by createdOn ASC) as ranking
from Post
where title like :titlePattern
) pr
where ranking <= :rank
)
""",
Post.class)
.setParameter("titlePattern", "High-Performance Java Persistence %")
.setParameter("rank", 5)
.getResultList();
However, if we change the ORDER BY clause of the dense_rank() function so that instead of:
dense_rank() over (order by createdOn ASC)
we use this:
dense_rank() over (order by createdOn, id ASC)
The query fails with the following error:
java.lang.UnsupportedOperationException
at org.hibernate.query.sqm.sql.internal.SqlAstProcessingStateImpl.getSelections(SqlAstProcessingStateImpl.java:122)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.resolveGroupOrOrderByExpression(BaseSqmToSqlAstConverter.java:2115)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSortSpecification(BaseSqmToSqlAstConverter.java:2313)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitOver(BaseSqmToSqlAstConverter.java:5456)
at org.hibernate.query.sqm.tree.expression.SqmOver.accept(SqmOver.java:132)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelection(BaseSqmToSqlAstConverter.java:2008)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitSelectClause(BaseSqmToSqlAstConverter.java:1951)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:1819)
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:6091)
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.consumeFromClauseRoot(BaseSqmToSqlAstConverter.java:2570)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.hibernate.query.sqm.tree.from.SqmFromClause.visitRoots(SqmFromClause.java:80)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitFromClause(BaseSqmToSqlAstConverter.java:2365)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitQuerySpec(BaseSqmToSqlAstConverter.java:1817)
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:6091)
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.visitWithInferredType(BaseSqmToSqlAstConverter.java:6200)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitInSubQueryPredicate(BaseSqmToSqlAstConverter.java:6863)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitInSubQueryPredicate(BaseSqmToSqlAstConverter.java:416)
at org.hibernate.query.sqm.tree.predicate.SqmInSubQueryPredicate.accept(SqmInSubQueryPredicate.java:87)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.visitWhereClause(BaseSqmToSqlAstConverter.java:2276)
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:213)
at org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter.translate(BaseSqmToSqlAstConverter.java:711)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:380)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:300)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:276)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:571)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:363)
at org.hibernate.query.sqm.internal.QuerySqmImpl.list(QuerySqmImpl.java:1073)
at org.hibernate.query.Query.getResultList(Query.java:94)
( https://hibernate.atlassian.net/browse/HHH-16347#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16347#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#100218- sha1:518c67a )
Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZTJlMGVkOTEw... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16343?atlOrigin=eyJpIjoiZTJlMG... ) HHH-16343 ( https://hibernate.atlassian.net/browse/HHH-16343?atlOrigin=eyJpIjoiZTJlMG... ) Batch Fetch Size + PreLoadEventListener + Polymorphic Entity with cache enabled could lead to IllegalStateException: Illegal pop() with non-matching JdbcValuesSourceProcessingState ( https://hibernate.atlassian.net/browse/HHH-16343?atlOrigin=eyJpIjoiZTJlMG... )
Change By: Jones ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
Given:
* Batch fetch size
* Polymorphic entity with cache and relationships described below
* PreLoadEventListener which uses Hibernate.getClass(event.getEntity())
When
* Executing a simple HQL to list entities
Then
* IllegalStateException: Illegal pop() with non-matching JdbcValuesSourceProcessingState happens
{code:java}@Entity
@Table(name = "ENTITY_A")
public class EntityA {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
Integer id;
@JoinColumn(name = "ENTITY_B", foreignKey = @ForeignKey(name = "FK_A_TO_B"))
@ManyToOne
@Fetch(FetchMode.SELECT)
EntityB entityB;
}{code}
{code:java}@Entity
@Table(name = "ENTITY_B")
@DiscriminatorColumn(name = "DISC_COL", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class ParentEntityB {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
Integer id;
}{code}
{code:java}@Entity
@DiscriminatorValue("1")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class EntityB extends ParentEntityB {
@JoinColumn(name = "ENTITY_C", foreignKey = @ForeignKey(name = "FK_B_TO_C"))
@ManyToOne
@Fetch(FetchMode.SELECT)
EntityC entityC;
}{code}
{code:java}@Entity
@Table(name = "ENTITY_C")
public class EntityC {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
Integer id;
}{code}
{code:java}public class MyPreLoadEventListener implements PreLoadEventListener {
@Override
public void onPreLoad(PreLoadEvent event) {
Hibernate.getClass(event.getEntity());
}
}{code}
{code:java}public class MyIntegrator implements Integrator {
@Override
public void integrate(Metadata metadata, BootstrapContext bootstrapContext,
SessionFactoryImplementor sessionFactory) {
ServiceRegistry serviceRegistry = sessionFactory.getServiceRegistry();
EventListenerRegistry listenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);
listenerRegistry.getEventListenerGroup(EventType.PRE_LOAD).appendListener(new MyPreLoadEventListener());
}
@Override
public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
// empty
}
}{code}
{code:java} @Test
public void hhhXXXXTest() throws Exception {
try (Session s = openSession()) {
Transaction tx = s.beginTransaction();
EntityA entityA1 = new EntityA();
EntityB entityB1 = new EntityB();
EntityC entityC1 = new EntityC();
entityB1.entityC = entityC1;
entityA1.entityB = entityB1;
s.persist(entityC1);
s.persist(entityB1);
s.persist(entityA1);
tx.commit();
}
try (Session s = openSession()) {
Transaction tx = s.beginTransaction();
String hql = "select e from org.hibernate.bugs.EntityA e";
Query<EntityA> query = s.createQuery(hql, EntityA.class);
List<EntityA> actual = query.list();
assertThat(actual).hasSize(1);
tx.rollback();
}
}{code}
{noformat}java.lang.IllegalStateException: Illegal pop() with non-matching JdbcValuesSourceProcessingState
at org.hibernate.sql.results.spi.LoadContexts.deregister(LoadContexts.java:46)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:209)
at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:362)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:109)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:302)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:243)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:521)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367)
at org.hibernate.query.sqm.internal.QuerySqmImpl.list(QuerySqmImpl.java:1084)
at org.hibernate.bugs.ORMUnitTestCase.hhhXXXXTest(ORMUnitTestCase.java:83)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.hibernate.testing.junit4.ExtendedFrameworkMethod.invokeExplosively(ExtendedFrameworkMethod.java:45)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.lang.Thread.run(Thread.java:833)
{noformat}
The failing test scenario to be attached soon and also available at [https://github.com/ratoaq2/HHH-16343|https://github.com/ratoaq2/HHH-16343...]
( https://hibernate.atlassian.net/browse/HHH-16343#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16343#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#100218- sha1:518c67a )
Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNTgxNTI1YWI1... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiNTgxNT... ) HHH-16341 ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiNTgxNT... ) PostgresPlusDialect uses postgresql jdbc driver classes even when EBD driver is used ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiNTgxNT... )
Change By: Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
{{PostgreSQLInetTypes*Test}} fail with EnterpriseDB when EDB JDBC Connector connector is used.
Example failure:
{noformat} Caused by:
org.hibernate.exception.SQLGrammarException: Unable to bind parameter #1 - 192.168.0.123/24 [Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.] [n/a]
at app//org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:89)
at app//org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:95)
at java.base@11.0.17/java.lang.Iterable.forEach(Iterable.java:75)
at app//org.hibernate.engine.jdbc.mutation.spi.BindingGroup.forEachBinding(BindingGroup.java:51)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.beforeStatement(JdbcValueBindingsImpl.java:85)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.performNonBatchedMutation(AbstractMutationExecutor.java:93)
at app//org.hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:40)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:43)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:168)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:110)
at app//org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2775)
at app//org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:102)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:616)
at app//org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:487)
at java.base@11.0.17/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:484)
at app//org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:358)
at app//org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at app//org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at app//org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1412)
at app//org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:485)
at app//org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2296)
at app//org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1961)
at app//org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:426)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:169)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:267)
at app//org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101)
... 3 more
Caused by:
com.edb.util.PSQLException: Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.
at app//com.edb.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:1107)
at app//org.hibernate.dialect.PostgreSQLInetJdbcType$1.doBind(PostgreSQLInetJdbcType.java:80)
at app//org.hibernate.type.descriptor.jdbc.BasicBinder.bind(BasicBinder.java:61)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:87)
... 28 more{noformat}
{{PostgreSQLInetJdbcType}} uses {{org.postgresql.util.PGobject}}, but with EDB JDBC Connector it should probably use {{com.edb.util.PGobject}} or extra type is needed for EDB.
There are also other types that use PostgreSQL JDBC driver classes directly.
( https://hibernate.atlassian.net/browse/HHH-16341#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16341#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#100218- sha1:518c67a )
Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYzhhMTE3YWQx... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16342?atlOrigin=eyJpIjoiYzhhMT... ) HHH-16342 ( https://hibernate.atlassian.net/browse/HHH-16342?atlOrigin=eyJpIjoiYzhhMT... ) operator does not exist: double precision[] = real[] on EnterpriseDB ( https://hibernate.atlassian.net/browse/HHH-16342?atlOrigin=eyJpIjoiYzhhMT... )
Issue Type: Bug Affects Versions: 6.2.0.CR4 Assignee: Unassigned Components: hibernate-core, testsuite Created: 21/Mar/2023 07:08 AM Environment: Hibernate ORM 6.2.0.CR4 + EnterpriseDB 14.4 + EDB JDBC Connector 42.5.0.1 + extra connection parameters: `preparedStatementCacheQueries=0&escapeSyntaxCallMode=callIfNoReturn` Priority: Major Reporter: Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
DoubleArrayTest fails with EnterpriseDB
org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [SELECT * FROM table_with_double_arrays t WHERE the_array IS NOT DISTINCT FROM ?] [ERROR: operator does not exist: double precision[] = real[]
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Position: 58] [n/a]
at app//org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:89)
at app//org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
at app//org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:252)
at app//org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:164)
at app//org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getMetaData(AbstractResultSetAccess.java:36)
at app//org.hibernate.sql.results.jdbc.internal.AbstractResultSetAccess.getColumnCount(AbstractResultSetAccess.java:52)
at app//org.hibernate.query.results.ResultSetMappingImpl.resolve(ResultSetMappingImpl.java:193)
at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:478)
at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:267)
at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168)
at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93)
at app//org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31)
at app//org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:102)
at app//org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:621)
at app//org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367)
at app//org.hibernate.query.spi.AbstractSelectionQuery.getSingleResult(AbstractSelectionQuery.java:461)
at app//org.hibernate.orm.test.type.DoubleArrayTest.lambda$testNativeQuery$6(DoubleArrayTest.java:134)
at app//org.hibernate.testing.transaction.TransactionUtil2.inSession(TransactionUtil2.java:35)
at app//org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase.inSession(BaseNonConfigCoreFunctionalTestCase.java:575)
at app//org.hibernate.orm.test.type.DoubleArrayTest.testNativeQuery(DoubleArrayTest.java:127)
Caused by:
com.edb.util.PSQLException: ERROR: operator does not exist: double precision[] = real[]
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Position: 58
at app//com.edb.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2946)
at app//com.edb.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2500)
at app//com.edb.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:508)
at app//com.edb.jdbc.PgStatement.executeInternal(PgStatement.java:528)
at app//com.edb.jdbc.PgStatement.execute(PgStatement.java:442)
at app//com.edb.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:403)
at app//com.edb.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:347)
at app//org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:240)
... 17 more
( https://hibernate.atlassian.net/browse/HHH-16342#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16342#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#100218- sha1:518c67a )
Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiMTE0ZTdhMDAw... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiMTE0ZT... ) HHH-16341 ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiMTE0ZT... ) PostgresPlusDialect uses postgresql jdbc driver classes even when EBD driver is used ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiMTE0ZT... )
Change By: Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
{{PostgreSQLInetTypes*Test}} fail with EnterpriseDB when EDB JDBC Connector connector is used.
Example failure:
{noformat} Caused by:
org.hibernate.exception.SQLGrammarException: Unable to bind parameter #1 - 192.168.0.123/24 [Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.] [n/a]
at app//org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:89)
at app//org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:95)
at java.base@11.0.17/java.lang.Iterable.forEach(Iterable.java:75)
at app//org.hibernate.engine.jdbc.mutation.spi.BindingGroup.forEachBinding(BindingGroup.java:51)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.beforeStatement(JdbcValueBindingsImpl.java:85)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.performNonBatchedMutation(AbstractMutationExecutor.java:93)
at app//org.hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:40)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:43)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:168)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:110)
at app//org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2775)
at app//org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:102)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:616)
at app//org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:487)
at java.base@11.0.17/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:484)
at app//org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:358)
at app//org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at app//org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at app//org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1412)
at app//org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:485)
at app//org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2296)
at app//org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1961)
at app//org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:426)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:169)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:267)
at app//org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101)
... 3 more
Caused by:
com.edb.util.PSQLException: Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.
at app//com.edb.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:1107)
at app//org.hibernate.dialect.PostgreSQLInetJdbcType$1.doBind(PostgreSQLInetJdbcType.java:80)
at app//org.hibernate.type.descriptor.jdbc.BasicBinder.bind(BasicBinder.java:61)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:87)
... 28 more{noformat}
{{PostgreSQLInetJdbcType}} uses {{org.postgresql.util.PGobject}}, but with EDB JDBC Connector it should probably use {{com.edb.util.PGobject}}
or extra type is needed for EDB.
( https://hibernate.atlassian.net/browse/HHH-16341#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16341#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#100218- sha1:518c67a )
Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZDIzYmM1MTdh... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiZDIzYm... ) HHH-16341 ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiZDIzYm... ) PostgresPlusDialect uses postgresql jdbc driver classes even when EBD driver is used ( https://hibernate.atlassian.net/browse/HHH-16341?atlOrigin=eyJpIjoiZDIzYm... )
Issue Type: Bug Affects Versions: 6.2.0.CR4 Assignee: Unassigned Created: 21/Mar/2023 06:04 AM Environment: Hibernate ORM 6.2.0.CR4 + EnterpriseDB 14.4 + EDB JDBC Connector 42.5.0.1 + extra connection parameters: `preparedStatementCacheQueries=0&escapeSyntaxCallMode=callIfNoReturn` Priority: Critical Reporter: Martin Simka ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
PostgreSQLInetTypes*Test fail with EnterpriseDB when EDB JDBC Connector connector is used.
Example failure:
Caused by:
org.hibernate.exception.SQLGrammarException: Unable to bind parameter #1 - 192.168.0.123/24 [Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.] [n/a]
at app//org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:89)
at app//org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:95)
at java.base@11.0.17/java.lang.Iterable.forEach(Iterable.java:75)
at app//org.hibernate.engine.jdbc.mutation.spi.BindingGroup.forEachBinding(BindingGroup.java:51)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.beforeStatement(JdbcValueBindingsImpl.java:85)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.performNonBatchedMutation(AbstractMutationExecutor.java:93)
at app//org.hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:40)
at app//org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:43)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:168)
at app//org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:110)
at app//org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2775)
at app//org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:102)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:616)
at app//org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:487)
at java.base@11.0.17/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at app//org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:484)
at app//org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:358)
at app//org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at app//org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at app//org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1412)
at app//org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:485)
at app//org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2296)
at app//org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1961)
at app//org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:426)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:169)
at app//org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:267)
at app//org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101)
... 3 more
Caused by:
com.edb.util.PSQLException: Can't infer the SQL type to use for an instance of org.postgresql.util.PGobject. Use setObject() with an explicit Types value to specify the type to use.
at app//com.edb.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:1107)
at app//org.hibernate.dialect.PostgreSQLInetJdbcType$1.doBind(PostgreSQLInetJdbcType.java:80)
at app//org.hibernate.type.descriptor.jdbc.BasicBinder.bind(BasicBinder.java:61)
at app//org.hibernate.engine.jdbc.mutation.internal.JdbcValueBindingsImpl.lambda$beforeStatement$0(JdbcValueBindingsImpl.java:87)
... 28 more
PostgreSQLInetJdbcType uses org.postgresql.util.PGobject , but with EDB JDBC Connector it should probably use com.edb.util.PGobject
( https://hibernate.atlassian.net/browse/HHH-16341#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16341#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#100218- sha1:518c67a )
Brian Forkan ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiMTVhOGRmYmY5... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiMTVhOG... ) HHH-16340 ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiMTVhOG... ) Duplicate column exception when using an EmbeddedId in a structure with Inheritance - Hibernate V6 ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiMTVhOG... )
Change By: Brian Forkan ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
{noformat}Caused by: org.hibernate.MappingException: Column 'TYPE' is duplicated in mapping for entity 'org.hibernate.bugs.JPAUnitTestCase$Node' (use '@Column(insertable=false, updatable=false)' when mapping multiple properties to the same column){noformat}
The exception above happens in Hibernate 6.0 and above.
[https://github.com/brianforkan/hibernate-test-case-templates/commit/ea51a...]
I have created two test cases, one for Hibernate 5, which works fine and one for Hibernate 6 which fails.
Following the suggestion in the exception does not fix the problem.
This is the structure I am using:
{noformat} @Entity(name = "Node")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE")
@DiscriminatorOptions(insert = false)
public static class Node {
@EmbeddedId
private NodeId id;
@Column(name = "NAME")
private String name;
public Node(NodeId id, String name) {
this.id = id;
this.name = name;
}
public NodeId getId() {
return id;
}
public void setId(NodeId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
protected Node() {
}
}
@Entity
@DiscriminatorValue("NODEA")
public static class NodeA extends Node {
protected NodeA() {
}
public NodeA(NodeId nodeId, String name) {
super(nodeId, name);
}
}
@Entity
@DiscriminatorValue("NODEB")
public static class NodeB extends Node {
protected NodeB() {
}
public NodeB(NodeId nodeId, String name) {
super(nodeId, name);
}
}
@Embeddable
public static class NodeId implements Serializable {
@Column(name = "ID")
private String id;
public String getId() {
return id;
}
public NodeId() {}
public NodeId(String id, String type) {
this.id = id;
this.type = type;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
NodeId nodeId = (NodeId) o;
if (!Objects.equals(id, nodeId.id)) {
return false;
}
return Objects.equals(type, nodeId.type);
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (type != null ? type.hashCode() : 0);
return result;
}
public void setId(String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Column(name = "TYPE" , insertable = false, updatable = false )
private String type;
}{noformat}
( https://hibernate.atlassian.net/browse/HHH-16340#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16340#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#100218- sha1:518c67a )
Brian Forkan ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiZWEyYzFkMjVl... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiZWEyYz... ) HHH-16340 ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiZWEyYz... ) Duplicate column exception when using an EmbeddedId in a structure with Inheritance - Hibernate V6 ( https://hibernate.atlassian.net/browse/HHH-16340?atlOrigin=eyJpIjoiZWEyYz... )
Change By: Brian Forkan ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
{noformat}Caused by: org.hibernate.MappingException: Column 'TYPE' is duplicated in mapping for entity 'org.hibernate.bugs.JPAUnitTestCase$Node' (use '@Column(insertable=false, updatable=false)' when mapping multiple properties to the same column){noformat}
The exception above happens in Hibernate 6.0 and above.
[https://github.com/brianforkan/hibernate-test-case-templates/commit/ea51a...]
I have created two test cases, one for Hibernate 5, which works fine and one for Hibernate 6 which fails.
Following the suggestion in the exception does not fix the problem.
This is the structure I am using:
{noformat} @Entity(name = "Node")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE")
@DiscriminatorOptions(insert = false)
public static class Node {
@EmbeddedId
private NodeId id;
@Column(name = "NAME")
private String name;
public Node(NodeId id, String name) {
this.id = id;
this.name = name;
}
public NodeId getId() {
return id;
}
public void setId(NodeId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
protected Node() {
}
}
@Entity
@DiscriminatorValue("NODEA")
public static class NodeA extends Node {
protected NodeA() {
}
public NodeA(NodeId nodeId, String name) {
super(nodeId, name);
}
}
@Entity
@DiscriminatorValue("NODEB")
public static class NodeB extends Node {
protected NodeB() {
}
public NodeB(NodeId nodeId, String name) {
super(nodeId, name);
}
}
@Embeddable
public static class NodeId implements Serializable {
@Column(name = "ID")
private String id;
public String getId() {
return id;
}
public NodeId() {}
public NodeId(String id, String type) {
this.id = id;
this.type = type;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
NodeId nodeId = (NodeId) o;
if (!Objects.equals(id, nodeId.id)) {
return false;
}
return Objects.equals(type, nodeId.type);
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (type != null ? type.hashCode() : 0);
return result;
}
public void setId(String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Column(name = "TYPE", insertable = false, updatable = false)
private String type;
}{noformat}
( https://hibernate.atlassian.net/browse/HHH-16340#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16340#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#100218- sha1:518c67a )
Alex Condurache ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=61e09d3... ) *created* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiMmE3ZDJmZWY3... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16332?atlOrigin=eyJpIjoiMmE3ZD... ) HHH-16332 ( https://hibernate.atlassian.net/browse/HHH-16332?atlOrigin=eyJpIjoiMmE3ZD... ) Named native queries do not work with jakarta.persistence.Tuple result class NOT FIXED ( https://hibernate.atlassian.net/browse/HHH-16332?atlOrigin=eyJpIjoiMmE3ZD... )
Issue Type: Bug Affects Versions: 6.1.7 Assignee: Unassigned Created: 17/Mar/2023 02:54 AM Priority: Blocker Reporter: Alex Condurache ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=61e09d3... )
Cannot invoke "String.toLowerCase()" because "aliases [i] " is null 2java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "aliases [i] " is null 3 at org.hibernate.jpa.spi.NativeQueryTupleTransformer$NativeTupleImpl.<init>(NativeQueryTupleTransformer.java:79) 4 at org.hibernate.jpa.spi.NativeQueryTupleTransformer.transformTuple(NativeQueryTupleTransformer.java:29) 5 at org.hibernate.jpa.spi.NativeQueryTupleTransformer.transformTuple(NativeQueryTupleTransformer.java:25) 6 at org.hibernate.sql.results.internal.RowTransformerTupleTransformerAdapter.transformRow(RowTransformerTupleTransformerAdapter.java:30) 7 at org.hibernate.sql.results.internal.StandardRowReader.readRow(StandardRowReader.java:109) 8 at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198) 9 at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) 10 at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:443) 11 at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:166) 12 at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:91) 13 at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31) 14 at org.hibernate.query.sql.internal.NativeSelectQueryPlanImpl.performList(NativeSelectQueryPlanImpl.java:105) 15 at org.hibernate.query.sql.internal.NativeQueryImpl.doList(NativeQueryImpl.java:602) 16 at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:363) 17 at org.hibernate.query.Query.getResultList(Query.java:94) 18 at com.example.demo.DemoApplicationTests.testNamedNativeQueries3(DemoApplicationTests.java:57)
( https://hibernate.atlassian.net/browse/HHH-16332#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16332#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#100218- sha1:9826a04 )
Kai Zander ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *updated* an issue
Hibernate ORM ( https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiODQ1YTE5NjRk... ) / Bug ( https://hibernate.atlassian.net/browse/HHH-16253?atlOrigin=eyJpIjoiODQ1YT... ) HHH-16253 ( https://hibernate.atlassian.net/browse/HHH-16253?atlOrigin=eyJpIjoiODQ1YT... ) [Envers] Schema Validation Failure With Audited (N)Clob Column with Hibernate 6 on H2 ( https://hibernate.atlassian.net/browse/HHH-16253?atlOrigin=eyJpIjoiODQ1YT... )
Change By: Kai Zander ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
Starting with Hibernate 6 (reproducible with since 6.0.0 -6.1.7 ), schema validation fails during startup if an audited entity has a CLOB/NCLOB column. The schema validation complains about the type of the CLOB/NCLOB column in the audit table.
Given the following entity:
{code:java}@Entity
@Audited
class TestEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob
@Column(columnDefinition = "nclob")
private String nclobColumn;
}{code}
and the following Liquibase change set:
{code:xml}<changeSet id="setup schema" author="me">
<createTable tableName="revinfo">
<column name="rev" type="int" autoIncrement="true">
<constraints primaryKey="true" primaryKeyName="pk_revinfo"/>
</column>
<column name="revtstmp" type="bigint">
<constraints nullable="false"/>
</column>
</createTable>
<createTable tableName="test_entity">
<column name="id" type="bigint" autoIncrement="true">
<constraints primaryKey="true" primaryKeyName="pk_test_entity"/>
</column>
<column name="nclob_column" type="nclob"/>
</createTable>
<createTable tableName="test_entity_aud">
<column name="id" type="bigint">
<constraints primaryKey="true" primaryKeyName="pk_test_entity_aud"/>
</column>
<column name="rev" type="int">
<constraints primaryKey="true"
primaryKeyName="pk_test_entity_aud"
referencedTableName="revinfo"
referencedColumnNames="rev"
foreignKeyName="fk_test_entity_aud_rev_revinfo_rev"/>
</column>
<column name="revtype" type="tinyint">
<constraints nullable="false"/>
</column>
<column name="nclob_column" type="nclob"/>
</createTable>
</changeSet>{code}
And {{hibernate.hbm2ddl.auto=validate}}, schema validation fails with the following exception:
{noformat}org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [nclob_column] in table [test_entity_aud]; found [character (Types#CLOB)], but expecting [nclob (Types#VARCHAR)]{noformat}
The exact same setup works on 5.6.15.
In
[^reproducers.zip]
I have attached two example projects. Both are identical Spring Boot projects, one with Spring Boot 2.7.9 and Hibernate 5, the other with Spring Boot 3.0.4 and Hibernate 6. Both projects use the same Liquibase (4.18.0) and H2 (2.1.214) versions. Extract them and run
{noformat}$ ./mvnw spring-boot:run{noformat}
The Hibernate 5 project starts and shuts down correctly, the Hibernate 6 project fails with the above mentioned schema validation error.
The same error can be reproduced in Hibernate 5 by removing the {{@Lob}} annotation from the {{nclobColumn}} attribute. Maybe Hibernate/Envers 6 have issues with that annotation?
Whether {{@Lob}} is present or not does not make a difference in Hibernate 6, the error is raised in both scenarios.
( https://hibernate.atlassian.net/browse/HHH-16253#add-comment?atlOrigin=ey... ) Add Comment ( https://hibernate.atlassian.net/browse/HHH-16253#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#100217- sha1:d601792 )