Harald Wirths (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=712020%...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiMzkzMTkzN2Fm...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16961?atlOrigin=eyJpIjoiMzkzMT...
) HHH-16961 (
https://hibernate.atlassian.net/browse/HHH-16961?atlOrigin=eyJpIjoiMzkzMT...
) Resolving an embedded id of an entity targeted by a unidirectional @OneToOne assocation
not referencing the embedded id fails (
https://hibernate.atlassian.net/browse/HHH-16961?atlOrigin=eyJpIjoiMzkzMT...
)
Issue Type: Bug Affects Versions: 5.6.15 Assignee: Unassigned Components: hibernate-core
Created: 20/Jul/2023 08:06 AM Environment: Hibernate ORM 5.6.15
(hibernate-test-case-templates/hibernate-orm-5), Java 8 (openjdk version
"1.8.0_372"), Linux (openSUSE Leap 15.4), H2 database (version 2.2.220)
Priority: Minor Reporter: Harald Wirths (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=712020%...
)
Given an embeddable
@Embeddable
public class Coordinate implements Serializable {
private static final long serialVersionUID = 1L;
private Integer slot_number;
private Integer port_number;
// Getters, setters, hashCode and equals are omitted for brevity
}
and the two entities
@Entity
public class Port implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private Coordinate coordinate;
private Integer connection_id;
// Getters and setters are omitted for brevity
}
@Entity
public class Device implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer device_id;
@OneToOne
@JoinColumn(name = "connection_id" , referencedColumnName =
"connection_id" )
private Port port;
// Getters and setters are omitted for brevity
}
selecting device entities ( entityManager.createQuery("select d from Device
d").getResultList() ) runs into an exception with the following stacktrace
javax.persistence.PersistenceException:
org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private
java.lang.Integer org.hibernate.bugs.Coordinate.port_number] by reflection for persistent
property [org.hibernate.bugs.Coordinate#port_number] : Port [coordinate=null,
connection_id=1]
at
org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at
org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1626)
at
org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1665)
at org.hibernate.bugs.JPAUnitTestCase.hhh123Test(JPAUnitTestCase.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
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.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: org.hibernate.property.access.spi.PropertyAccessException: Error accessing
field [private java.lang.Integer org.hibernate.bugs.Coordinate.port_number] by reflection
for persistent property [org.hibernate.bugs.Coordinate#port_number] : Port
[coordinate=null, connection_id=1]
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:75)
at
org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValue(AbstractComponentTuplizer.java:59)
at org.hibernate.type.ComponentType.getPropertyValue(ComponentType.java:419)
at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:246)
at org.hibernate.engine.spi.EntityUniqueKey.generateHashCode(EntityUniqueKey.java:67)
at org.hibernate.engine.spi.EntityUniqueKey.<init>(EntityUniqueKey.java:48)
at org.hibernate.type.ManyToOneType.resolve(ManyToOneType.java:288)
at
org.hibernate.engine.internal.TwoPhaseLoad$EntityResolver.lambda$static$0(TwoPhaseLoad.java:576)
at
org.hibernate.engine.internal.TwoPhaseLoad.initializeEntityEntryLoadedState(TwoPhaseLoad.java:221)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:155)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:126)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1201)
at org.hibernate.loader.Loader.processResultSet(Loader.java:1009)
at org.hibernate.loader.Loader.doQuery(Loader.java:967)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:357)
at org.hibernate.loader.Loader.doList(Loader.java:2868)
at org.hibernate.loader.Loader.doList(Loader.java:2850)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2682)
at org.hibernate.loader.Loader.list(Loader.java:2677)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:540)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:218)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1459)
at
org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1649)
at
org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1617)
... 36 more
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Integer field
org.hibernate.bugs.Coordinate.port_number to org.hibernate.bugs.Port
at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
at java.lang.reflect.Field.get(Field.java:393)
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:71)
... 60 more`
(
https://hibernate.atlassian.net/browse/HHH-16961#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16961#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#100232- sha1:1e691fe )