对不起,如果你认为这篇文章是重复的,但我无法找到并回答我的问题。也许你可以帮助我)谢谢。
"
INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@536f2a7e'
***Exception in thread "main" org.hibernate.MappingException: Unknown entity: org.javabrains.UserDetails
at*** org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1627)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:682)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669)
at org.javabrains.Main.main(Main.java:22)
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Main.java
package org.javabrains;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Created by roysez on 26.03.2017.
*/
public class Main {
public static void main(final String[] args) throws Exception{
UserDetails user = new UserDetails();
user.setUserId(1);
user.setUserName("Sergiy");
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}
}
的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/hibernate</property>
<property name='connection.username'>root</property>
<property name='connection.password'>sergio161098</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>
<!-- Echo all executed SQL to stdout -->
<property name='show_sql'>true</property>
<property name="hbm2ddl.auto">create</property>
<!-- Mapping files -->
<mapping class="org.javabrains.UserDetails"/>
</session-factory>
</hibernate-configuration>
UserDetails.java
package org.javabrains;
import org.hibernate.annotations.Entity;
import javax.persistence.Id;
/**
* Created by roysez on 26.03.2017.
*/
@Entity
public class UserDetails {
@Id
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
我不知道该怎么做,尝试所有解决方案,但其中任何一个都无法帮助
答案 0 :(得分:0)
我认为你应该在UserDetails.java中添加所有正确的注释:@ Table,@ Column,@ GeneratedValue等。 不要忘记在MySQL服务器上有一些架构。
如果您使用的是Hibernate 5,则必须使用javax.persistence.
包进行注释
答案 1 :(得分:0)
如果您打算使用JPA API,我认为您应该更改UserDetails.java
的第3行:
import org.hibernate.annotations.Entity;
使用JPA注释:
import javax.persistence.Entity;
Hibernate documentation说org.hibernate.annotations.Entity
不替换javax.persistence.Entity
,它只允许配置其他功能。