Исключение недоступного объекта при попытке сохранить данные в базе данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Исключение недоступного объекта при попытке сохранить данные в базе данных

Сообщение Anonymous »

Я создаю программу управления страхованием с помощью hibernate и javaFX. Я пытался сохранить объект в своей базе данных, когда столкнулся со следующей ошибкой.

Код: Выделить всё

Apr 26, 2024 11:33:44 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: default]
Apr 26, 2024 11:33:44 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 6.0.2.Final
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using built-in connection pool (not intended for production use)
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: Loaded JDBC driver class: org.postgresql.Driver
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001012: Connecting with JDBC URL [jdbc:postgresql://aws-0-ap-southeast-1.pooler.supabase.com/postgres]
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {password=****, user=postgres.lfmakwarfqeintgjcseo}
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections 
INFO: HHH10001115: Connection pool size: 20 (min=1)
Apr 26, 2024 11:33:45 AM org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialect
INFO: HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
Apr 26, 2024 11:33:46 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:postgresql://aws-0-ap-southeast-1.pooler.supabase.com/postgres]
Exception in thread "main" jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1509)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1430)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:55)
at jakarta.persistence@3.0.0/jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:80)
at jakarta.persistence@3.0.0/jakarta.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at org.example.insurancemanagementapplication/Entity.Testing.main(Testing.java:16)
Caused by: org.hibernate.MappingException: Could not instantiate persister org.hibernate.persister.entity.SingleTableEntityPersister
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:103)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:75)
at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.processBootEntities(MappingMetamodelImpl.java:277)
at org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:210)
at org.hibernate.metamodel.internal.RuntimeMetamodelsImpl.finishInitialization(RuntimeMetamodelsImpl.java:60)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:308)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:415)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1425)
...  4 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.lang.String Entity.User.id accessible: module org.example.insurancemanagementapplication does not "opens Entity" to unnamed module @7920ba90
at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:388)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:364)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:312)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:177)
at org.hibernate.internal.util.ReflectHelper.ensureAccessibility(ReflectHelper.java:412)
at org.hibernate.internal.util.ReflectHelper.findField(ReflectHelper.java:402)
at org.hibernate.property.access.internal.PropertyAccessFieldImpl.(PropertyAccessFieldImpl.java:34)
at org.hibernate.property.access.internal.PropertyAccessStrategyFieldImpl.buildPropertyAccess(PropertyAccessStrategyFieldImpl.java:26)
at org.hibernate.metamodel.internal.EntityRepresentationStrategyPojoStandard.makePropertyAccess(EntityRepresentationStrategyPojoStandard.java:381)
at org.hibernate.metamodel.internal.EntityRepresentationStrategyPojoStandard.(EntityRepresentationStrategyPojoStandard.java:146)
at org.hibernate.metamodel.internal.ManagedTypeRepresentationResolverStandard.resolveStrategy(ManagedTypeRepresentationResolverStandard.java:60)
at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:725)
at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:152)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:92)
...  11 more
Вот мой код:

Код: Выделить всё

@MappedSuperclass
public class User {
@Id
@Column(name = "id")
private String id;
@Basic
@Column(name = "full_name")
private String fullName;
@Basic
@Column(name = "address")
private String address;
@Basic
@Column(name = "phone_number")
private String phoneNumber;
@Basic
@Column(name = "email")
private String email;
@Basic
@Column(name = "password")
private String password;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getFullName() {
return fullName;
}

public void setFullName(String fullName) {
this.fullName = fullName;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User that = (User) o;
return Objects.equals(id, that.id) && Objects.equals(fullName, that.fullName) && Objects.equals(address, that.address) && Objects.equals(phoneNumber, that.phoneNumber) && Objects.equals(email, that.email) && Objects.equals(password, that.password);
}

@Override
public int hashCode() {
return Objects.hash(id, fullName, address, phoneNumber, email, password);
}
}

Код: Выделить всё

@Entity
@Table(name = "system_admin", schema = "public", catalog = "postgres")
public class SystemAdmin extends User {

}

Код: Выделить всё

public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default");
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try{
transaction.begin();
SystemAdmin systemAdmin = new SystemAdmin();
systemAdmin.setId("SA1232678");
systemAdmin.setFullName("Tran Ba Duong");
systemAdmin.setPassword("Duongsssber123");
systemAdmin.setEmail("trunDuong0806@gmail.com");
systemAdmin.setPhoneNumber("0909154614");
systemAdmin.setAddress("999 Elizabeth street Carlton 3053 VIC");
entityManager.persist(systemAdmin);

transaction.commit();
} finally {
if (transaction.isActive()){
transaction.rollback();
}
entityManager.close();
entityManagerFactory.close();
}

}
Я искал в Интернете потенциальное решение и пока не нашел его. Следует отметить, что я создал отдельный проект, не связанный с Javafx, и он работает нормально. Однако, пока он включает его в структуру проекта java-fx, эта проблема возникает. В чем причина проблемы? Как я могу это решить? Спасибо большое

Подробнее здесь: https://stackoverflow.com/questions/783 ... o-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»