【问题标题】:Hibernate Unknown Entity error with SQL Server 2012SQL Server 2012 的休眠未知实体错误
【发布时间】:2015-09-02 19:29:03
【问题描述】:

我是 Hibernate 的新手,我正在尝试将它连接到 SQL Server 2012。 我正在尝试在本主题中应用 hello world 示例

http://www.java2blog.com/2013/01/hibernate-hello-world-example-in-eclipse.html

一开始不工作,但在 Stack Overflow 中搜索后,我成功地将它连接到 SQL Server 2012。 但是我在创建的“用户”类与数据库之间的映射仍然存在问题。

这是我的配置文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
 <property name = "hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
 <property name = "hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
 <property name = "hibernate.connection.url">jdbc:sqlserver://KAREEM-LAPTOP;databaseName=Hibernate;instanceName=SQLEXPRESS;</property>
 <property name = "hibernate.connection.username">sa</property>
 <property name = "hibernate.connection.password">DFKI123</property>
 <property name = "hibernate.show_sql">true</property>
 <property name="hbm2ddl.auto">create</property>  
<mapping class="org.arpit.javapostsforlearning.User" table="User"></mapping>
</session-factory>
</hibernate-configuration>

用户类

package org.arpit.javapostsforlearning;  

import javax.persistence.Column;  

import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;  


@Entity(name="User")
@Table(name = "User")
public class User {  

 @Id
 int userId;  

 @Column(name="User_Name")  
 String userName;

 @Column(name="userMessage")  
 String userMessage;  


 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;  
 }  

 public String getUserMessage() {  
  return userMessage;  
 }  

 public void setUserMessage(String userMessage) {  
  this.userMessage = userMessage;  
 }  

}

休眠主类

package org.arpit.javapostsforlearning;  

import org.hibernate.Session;  
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration; 
import org.hibernate.cfg.annotations.*;
import org.hibernate.service.ServiceRegistry;  
//import org.hibernate.boot.registry.StandardServiceRegistryBuilder;


public class HibernateMain {  

 public static void main(String[] args) {  

  Configuration configuration=new Configuration(); 
  configuration.configure("hibernate.cfg.xml");  

  ServiceRegistry sr= new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();  
  SessionFactory sf=configuration.buildSessionFactory(sr);  


  User user1=new User(); 
  user1.setUserId(1);
  user1.setUserName("Arpit");  
  user1.setUserMessage("Hello world from arpit");  

  User user2=new User();  
  user2.setUserId(2);
  user2.setUserName("Ankita");  
  user2.setUserMessage("Hello world from ankita");  
  Session ss=sf.openSession();  
  ss.beginTransaction();  
 //saving objects to session  
  ss.save(user1);  
  ss.save(user2);  
  ss.getTransaction().commit();  
  ss.close();  

 }  

}

它工作正常,我得到一个信息表明架构导出完成

但在那之后我得到了一个错误:

线程“主”org.hibernate.MappingException 中的异常:未知实体:org.arpit.javapostsforlearning.User

我尝试关注几个话题谈论同一个问题,但没有人与我合作,所有话题都与注释有关,但我没有任何希望地做了他们的所有建议。

我还尝试根据本文将映射部分添加到配置文件中 Hibernate unknown entity error when saving new object

但它也没有用,

什么可能导致这个问题?

【问题讨论】:

  • 使用@Entity@Table(没有名字)就足够了,因为你不改变它(默认是User)。关于映射,下面这行&lt;mapping class="org.arpit.javapostsforlearning.User" table="User"&gt;&lt;/mapping&gt;可以改成&lt;mapping class="org.arpit.javapostsforlearning.User"/&gt;
  • 您可以尝试将 User 名称更改为 UserType,因为 SQL 中保留了某些单词,或者如果您不想更改 Java 代码,只需为 @Table 添加一个不同的名称太多了。例如:@Table(name="USER_TABLE")

标签: java hibernate jpa sql-server-2012


【解决方案1】:

尝试在此行从create 更改为update

<property name="hbm2ddl.auto">create</property> 

@Entity 不应该有任何参数,如下所示:

    @Entity
    @Table(name = "User")
    public class User {  

另外,请确保数据库中的表名与您在注释中声明的完全相同。希望你可以这样解决。

【讨论】:

  • 我做了,但同样的问题仍然存在。
  • 数据库中的表名是User,还是user?
  • “用户”作为类的名称
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多