大家好,我不熟悉Hibernate。所以当我开始上课时。它在控制台中显示找不到我的配置文件xml的映射(resource:com.live.hibernate.User.hbm.xm)。我做了一个简单的例子:
User.java :
package com.live.beans;
public class User {
private int id;
private String Name;
private String email;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int id, String name, String email, String password) {
super();
this.id = id;
Name = name;
this.email = email;
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", Name=" + Name + ", email=" + email
+ ", password=" + password + "]";
}
}
User.hbm.xml :
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class>
<id name="id"
type="int"
column="id"
length="15"/>
<property name="name"
type="string"
column="name"
length="45"
/>
<property name="email"
type="string"
column="email"
length="45"
/>
<property name="password"
type="string"
column="password"
length="45"
/>
</class>
</hibernate-mapping>
我为test创建了一个简单的java类(HibernateTest.java):
package com.live.presentation;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.live.beans.User;
public class HibernateTest {
private Session session;
private void openSession(){
Configuration conf = new Configuration();
SessionFactory sessionFactory= conf.configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
}
private void closeSession(){
session.getTransaction().commit();
session.close();
}
public HibernateTest() {
openSession();
User p = new User(1, "Ali", "ali@gmail.com", "password");
session.save(p);
System.out.println("sauvegarde reussi");
closeSession();
}
public static void main(String[] args) {
new HibernateTest();
}
}
pom.xml :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>p01</groupId>
<artifactId>p01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<name>HibernateTest</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.0.CR2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
</dependencies>
</project>
这是我的控制台:
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.hibernate.MappingNotFoundException: resource: com.live.hibernate.User.hbm.xml not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:724)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2102)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2074)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2054)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2007)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1922)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1901)
at com.live.presentation.HibernateTest.openSession(HibernateTest.java:15)
at com.live.presentation.HibernateTest.<init>(HibernateTest.java:26)
at com.live.presentation.HibernateTest.main(HibernateTest.java:35)
被修改
<?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>
<property name="hibernate.connection.url">jdbc:mysql://localhost/ment</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">false</property>
<mapping resource="com.live.hibernate.User.hbm.xml" />
</session-factory>
</hibernate-configuration>
文件夹结构:
src
|-- com
|-- live
| |-- hibernate
| | `-- User.hbm.xml
live
|`--beans
| `-- User.java
live
`--presentation
`-- HibernateTest.java
WebContent
|-- META-INF
|-- WEB-INF
|
|-- index.xhtml
pom.xml
其他 我说的是,当我调试时,我有一个例外:
SessionFactory sessionFactory= conf.configure().buildSessionFactory();
您知道不推荐使用buildSessionFactory()方法。有什么想法吗?
请有人帮助我!
答案 0 :(得分:0)
您的hibernate.cfg.xml
在哪里?
请务必将hibernate.cfg.xml
和User.hbm.xml
放在相同的源文件夹中,并放在您放置的hibernate.cfg.xml
内:
<mapping resource="User.hbm.xml" />