Arul Pragasam (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=59fd553...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiM2E4OTczMGVl...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16855?atlOrigin=eyJpIjoiM2E4OT...
) HHH-16855 (
https://hibernate.atlassian.net/browse/HHH-16855?atlOrigin=eyJpIjoiM2E4OT...
) With IdClass if parts of composite key is auto generated, while saving
PropertyAccessException thrown (
https://hibernate.atlassian.net/browse/HHH-16855?atlOrigin=eyJpIjoiM2E4OT...
)
Issue Type: Bug Assignee: Unassigned Attachments: JPAUnitTestCaseIdClass.java Created:
26/Jun/2023 20:08 PM Priority: Major Reporter: Arul Pragasam (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=59fd553...
)
I have a composite primary key
* Account_id
* id
Id column is a generated value using GenerationType.IDENTITY strategy. When we create a
new instance and save using hibernate entity manager, we get below exception
*Code:*
doInJPA( ()->entityManagerFactory, em -> {
SalesContact contact = new SalesContact();
contact.setFirstName( "John" );
contact.setAccountId(1L);
entityManager.persist( contact );
Assertions.assertNotNull(contact.getId());
});
*Exception*
org.hibernate.PropertyAccessException: Could not set value of type
[org.hibernate.id.IdentifierGeneratorHelper$2] :
`org.hibernate.bugs.JPAUnitTestCaseIdClass$CompositeKey.id` (setter)
at org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:86)
at org.hibernate.mapping.Component$ValueGenerationPlan.execute(Component.java:666)
at
org.hibernate.id.CompositeNestedGeneratedValueGenerator.generate(CompositeNestedGeneratedValueGenerator.java:111)
at org.hibernate.id.IdentifierGenerator.generate(IdentifierGenerator.java:147)
at
org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)
at
org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:175)
at
org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:93)
at
org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77)
at
org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54)
at
org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:755)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:739)
at
org.hibernate.bugs.JPAUnitTestCaseIdClass.lambda$HHH16849$1(JPAUnitTestCaseIdClass.java:53)
at org.hibernate.testing.transaction.TransactionUtil.doInJPA(TransactionUtil.java:258)
at org.hibernate.testing.transaction.TransactionUtil.doInJPA(TransactionUtil.java:299)
at org.hibernate.bugs.JPAUnitTestCaseIdClass.HHH16849(JPAUnitTestCaseIdClass.java:48)
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.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.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at
com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field
org.hibernate.bugs.JPAUnitTestCaseIdClass$CompositeKey.id to
org.hibernate.id.IdentifierGeneratorHelper$2
at
java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at
java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at
java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.base/java.lang.reflect.Field.set(Field.java:799)
at org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:55)
... 44 more
(
https://hibernate.atlassian.net/browse/HHH-16855#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16855#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=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100227- sha1:3bc807d )