Java 如何使用Eclipse通过Hbernate连接到MySql
我不熟悉冬眠和日食。我通过观看youtube视频成功地完成了与德比的合作。现在我想用MySql来做 我成功地将MySQL连接到eclips 接下来,我编写了简单的persistent类person 导入javax.persistence.Entity; 导入javax.persistence.Id @实体 公共阶层人士{Java 如何使用Eclipse通过Hbernate连接到MySql,java,mysql,eclipse,hibernate,orm,Java,Mysql,Eclipse,Hibernate,Orm,我不熟悉冬眠和日食。我通过观看youtube视频成功地完成了与德比的合作。现在我想用MySql来做 我成功地将MySQL连接到eclips 接下来,我编写了简单的persistent类person 导入javax.persistence.Entity; 导入javax.persistence.Id @实体 公共阶层人士{ private String name; private int id; public String getName() { return name; } publ
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
接下来,我为此编写了一个测试类
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class PersonTest {
/**
* @param args
*/
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Person.class);
cfg.configure("hibernate.cfg.xml");
new SchemaExport(cfg).create(true, true);
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
Person person = new Person();
person.setName("Alex");
person.setId(1);
session.save(cfg);
session.getTransaction().commit();
}
}
我的Hibernate配置文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/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/ruwaKuppi</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<property name="hibernate.default_schema">ruwaKuppi</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">2</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/ruwaKuppi
根
1234
鲁瓦库皮
2.
org.hibernate.dialogue.mysqldialogue
更新
我的映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Person" table="PERSON">
<id name="id" type="int" column="ID" >
<generator class="assigned"/>
</id>
<property name="name">
<column name="NAME" />
</property>
</class>
</hibernate-mapping>
现在我得到了这个错误。。。。 ![在此处输入图像描述][2] 13:13:17795信息版本:15-Hibernate注释3.4.0.GA 13:13:17818信息环境:560-Hibernate 3.3.2.GA 13:13:17821信息环境:593-找不到hibernate.properties 13:13:17825信息环境:771-字节码提供程序名称:javassist 13:13:17830信息环境:652-使用JDK1.4java.sql.Timestamp处理 13:13:17927信息版本:14-Hibernate Commons Annotations 3.1.0.GA 13:13:17949信息配置:1474-从资源配置:hibernate.cfg.xml 13:13:17950信息配置:1451-配置资源:hibernate.cfg.xml 13:13:18059信息配置:600-从资源读取映射:person.hbm.xml 13:13:18147信息配置:1589-配置的会话工厂:null 13:13:18173信息方言:175-使用方言:org.hibernate.dialogue.mysqldialogue 13:13:18307信息HbmBinder:322-映射类:Person->Person 13:13:18326信息AnnotationBinder:419-来自注释类的绑定实体:Person 13:13:18364信息映射:161-重复导入:个人->个人 13:13:18367信息实体绑定器:422-将实体人员绑定到表人员 线程“main”org.hibernate.DuplicateMappingException中的异常:重复类/实体映射人 位于org.hibernate.cfg.Mappings.addClass(Mappings.java:141) 位于org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:789) 位于org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:546) 位于org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:291) 位于org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:803) 位于org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:128) 位于org.hibernate.tool.hbm2ddl.SchemaExport.(SchemaExport.java:91) 在PersonTest.main(PersonTest.java:18) 请任何人帮我摆脱这混乱。。。非常感谢你的关心 p、 s:我知道最后一个代码不清楚……我想这是上面的重要一行 13:13:18367信息实体绑定器:422-将实体人员绑定到表人员 线程“main”org.hibernate.DuplicateMappingException中的异常:重复类/实体映射人
在org.hibernate.cfg.Mappings.addClass(Mappings.java:141)中,您告诉hibernate从hibernate.cfg.xml文件加载映射:
cfg.configure("hibernate.cfg.xml");
但您也告诉它将Person类添加为映射实体:
cfg.addAnnotatedClass(Person.class);
决定是使用注释还是使用XML映射Person实体。如果选择XML,则删除
cfg.addAnnotatedClass(Person.class)代码>行。如果选择注释,则从XML文件中删除
(当然还有它的所有子元素)。从Person类id的getter中删除注释'@id'
@Entity public class Person {
private String name;
@Id
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
测试班
公共类个人测试{
/**
* @param args
*/
public static void main(String[] args) {
Person person = new Person();
person.setName("Alex");
person.setId(1);
SessionFactory factory = Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
session.beginTransaction();
session.save(person);
session.getTransaction().commit();
}
}
hibernate.cfg.xml
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/ruwaKuppi
根
1234
1.
org.hibernate.dialogue.mysqldialogue
org.hibernate.cache.NoCacheProvider
真的
创造
无需添加映射文件
确保您的HibernateJAR包含在JDBCJAR中。
包含来自lib字节码javassist的jar,
jpa和必修课。
检查hibernate.cfg.xml文件,它应该包含在src文件夹中然后我应该从hibernate.cfg.xml中删除吗?亲爱的JB NIzet
我删除了它,并出现了新的错误,(我以前在插入person.hbm.xml文件之前遇到过这个错误)现在我将它取回
14:33:23608信息SessionFactoryObjectFactory:105-未将工厂绑定到JNDI,未配置JNDI名称14:33:23612信息模式更新:155-在线程“main”中运行hbm2ddl模式更新异常org.hibernate.hibernate异常:在org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java: 620)在PersonTest.main(PersonTest.java:21)我现在应该做什么..提前感谢您,我删除了它,并出现了新的错误,(我以前在插入person.hbm.xml文件之前遇到过这个错误)现在我将它取回
14:33:23608信息SessionFactoryObjectFactory:105-未将工厂绑定到JNDI,未配置JNDI名称14:33:23612信息模式更新:155-在线程“main”中运行hbm2ddl模式更新异常org.hibernate.hibernate异常:没有配置CurrentSessionContext!在PersonTest.main(PersonTest.java:21)的org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:620)中,我现在应该做什么..提前感谢您将线程添加到XML配置文件中,并阅读以了解其含义。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//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/ruwaKuppi</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</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>
<!-- 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 -->
<property name="hbm2ddl.auto">create</property>
<!-- Names the annotated entity class -->
<mapping class="Put your package name and class name here"/>
</session-factory>
</hibernate-configuration>