Я пытаюсь запустить проект Hibernate Hello World Project на основе maven. Я сделал каждый шаг правильно, но он дает исключение сопоставления Hibernate: Неизвестная сущность. Я уже объявил отображение моего класса Entity в Hibernate.cfg.xml.Исключение отображения спящего режима [Пробовал предыдущие решения]
Вот мой код файла конфигурации.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup
if table isn't present hibernate will create the table -->
<property name="hbm2ddl.auto">create</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="com.openlibrary.model.Book"/>
</session-factory>
</hibernate-configuration>
Вот Factory Session код
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
return sessionFactory;
}
И моя модель класса пакет com.openlibrary.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Book {
@Id
@GeneratedValue
int bookID;
String bookName;
public int getBookID() {
return bookID;
}
public void setBookID(int bookID) {
this.bookID = bookID;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
}
А вот исключение
Exception in thread "main" org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.openlibrary.model.Book
at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:787)
at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2637)
at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:164)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2575)
at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2562)
at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1044)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955)
at com.openlibrary.dao.BookDAO.getBookById(BookDAO.java:43)
at com.openlibrary.test.Testing.main(Testing.java:22)
Я знаю, что такой вопрос был задан раньше, но я не могу понять, почему спящий режим бросает исключение, когда отображение уже сделано. Я сделал это в последний раз почти год назад. Он работал так же. Нужна помощь здесь.
Теперь в сценарии есть небольшой поворот. Я обошел исключение, изменив свою зависимость от maven-hibernate-core. Я получал исключение из этой зависимости. Это было последнее на веб-сайте maven.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.0.CR2</version>
</dependency>
Я поменял версию на 4.3.7.Final. Тогда не было никаких исключений. Я не знаю, почему это исключение. Может быть, кто-то может объяснить. Я буду очень благодарен.
Должен ли файл быть назван hibernate.cfg.xml (с учетом регистра, h вместо H)? Вы действительно использовали свой файл конфигурации (может быть, у вас есть другой файл конфигурации в вашем пути к классу? Или вы упаковали свой класс объектов в приложение? – diufanman
Можете ли вы отправить исключение, которое вы получаете? –
@diufanman sorry Я просто набрал неправильный вопрос. На самом деле это hibernate.cfg.xml и то же самое в моем проекте. И да, я уверен в этом файле конфигурации, и я правильно поместил класс сущности. –