【发布时间】: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)。关于映射,下面这行<mapping class="org.arpit.javapostsforlearning.User" table="User"></mapping>可以改成<mapping class="org.arpit.javapostsforlearning.User"/>。 -
您可以尝试将
User名称更改为UserType,因为 SQL 中保留了某些单词,或者如果您不想更改 Java 代码,只需为@Table添加一个不同的名称太多了。例如:@Table(name="USER_TABLE")
标签: java hibernate jpa sql-server-2012