I searched for a long time but I cannot understand what I am doing wrong here.
I’m using spring boot with starter-data-jpa. Versions:
- Hibernate: 6.3.1.Final
- HikariCP: 5.1.0
- springboot dependency management: 1.0.11.RELEASE
My table is initialized with:
create table if not exists test (id bigint not null auto_increment, primary key(id));
I created the class:
package dev.azn9.ektrad.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "test")
public class TestEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
Then I tried to save it:
TestEntity testEntity = new TestEntity();
// For testing purposes only //
StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();
Map<String, Object> settings = new HashMap<>();
settings.put(JdbcSettings.CONNECTION_PROVIDER, HikariCPConnectionProvider.class.getName());
settings.put(JdbcSettings.URL, "...");
settings.put(JdbcSettings.USER, "...");
settings.put(JdbcSettings.PASS, "...");
registryBuilder.applySettings(settings);
StandardServiceRegistry registry = registryBuilder.build();
try (SessionFactory sessionFactory = new MetadataSources(registry)
.addAnnotatedClass(TestEntity.class)
.buildMetadata()
.buildSessionFactory()) {
sessionFactory.inTransaction(session -> {
session.persist(testEntity);
});
} catch (Exception e) {
SetupService.LOGGER.error("Cannot create data!", e);
}
I receive the following error:
org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long dev.azn9.ektrad.model.TestEntity.id] by reflection for persistent property [dev.azn9.ektrad.model.TestEntity#id] : dev.azn9.ektrad.model.TestEntity@1715eda8
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:52) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.metamodel.mapping.internal.BasicEntityIdentifierMappingImpl.getIdentifier(BasicEntityIdentifierMappingImpl.java:158) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4492) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4060) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:293) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.internal.EntityState.getEntityState(EntityState.java:62) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.entityState(DefaultPersistEventListener.java:112) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:85) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:766) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
// ...
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field dev.azn9.ektrad.model.TestEntity.id to dev.azn9.ektrad.model.TestEntity
at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) ~[na:na]
at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) ~[na:na]
at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58) ~[na:na]
at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36) ~[na:na]
at java.base/java.lang.reflect.Field.get(Field.java:425) ~[na:na]
at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:48) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]
... 31 common frames omitted