При попытке извлечь сущность из базы данных, используя JPA EntityManager, я получаю исключение ClassCastException, которое ссылается на два идентичных класса. После прочтения других постов / статей, я подозреваю, что виновником может быть приложение, использующее 2 разных загрузчика классов одного типа. К сожалению, я не знаю, как это проверить или исправить. Может ли кто-нибудь помочь пролить свет на эту ситуацию и ее решение?
Сущность Member.java
package com.example.mysql_flyway_database.entities;
import javax.persistence.*;
@Entity
@Table(name = "_member_")
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer memberId;
@Column(name = "member_name")
private String memberName;
public Integer getMemberId() {
return memberId;
}
... // other getter/setter methods
}
persistence.xml - хранится в / resources / META-INF / , на случай, если это имеет значение
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="Member" transaction-type="RESOURCE_LOCAL">
<class>com.example.mysql_flyway_database.entities.Member</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/JDND_C3"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="Keep1Moving2Forward3!"/>
</properties>
</persistence-unit>
</persistence>
MyApplication
...
private static void readMembersAsEntities(EntityManagerFactory factory) {
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
Member member = manager.find(Member.class, 1);
System.out.println(String.format("Member %s was found", member.getMemberName()));
}
...
Вот журнал:
Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.ClassCastException: com.example.mysql_flyway_database.entities.Member cannot be cast to com.example.mysql_flyway_database.entities.Member
at com.example.mysql_flyway_database.MysqlFlywayDatabaseApplication.readMembersAsEntities(MysqlFlywayDatabaseApplication.java:51)
at com.example.mysql_flyway_database.MysqlFlywayDatabaseApplication.main(MysqlFlywayDatabaseApplication.java:42)
... 5 more
Примечание: Это очень похоже на подчеркнутую здесь проблему:
Проблема загрузки класса JPA с Hibernate .
Раскрытие информации: я довольно новичок в Spring и его плагинах / зависимостях (в настоящее время изучаю), поэтому я немного растерялся из-за предоставленного решения, описанного в упомянутом посте. Относительно решения, упомянутого в предоставленном посте: В моем проекте я не вижу /WEB-INF/lib.
Любая помощь будет принята с благодарностью.