如何修复我的第一个HibernateJava程序

如何修复我的第一个HibernateJava程序,java,hibernate,maven,Java,Hibernate,Maven,我创建了一个新的Maven项目,在EclipseKepler中安装了JBoss工具(包括Hibernate),我想测试一个Hibernate程序,所以我在下面做了这个程序,但当我作为Java程序运行时,我会遇到错误/异常 这是我的档案: 文件SaveStudent.java: package com.hibernate.demo; import com.hibernate.entity.student; import org.hibernate.Session; import org.hib

我创建了一个新的Maven项目,在EclipseKepler中安装了JBoss工具(包括Hibernate),我想测试一个Hibernate程序,所以我在下面做了这个程序,但当我作为Java程序运行时,我会遇到错误/异常

这是我的档案:

文件SaveStudent.java:

package com.hibernate.demo;

import com.hibernate.entity.student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class SaveStudent {

    public static void main(String[] args) {

        SessionFactory f = new Configuration()
                        .configure("hibernate.cfg.xml")
                        .addAnnotatedClass(student.class)
                        .buildSessionFactory();

        Session session = f.getCurrentSession();

        try {
            System.out.println("Creating student...");
            student st = new student("X","X","xx@xx.xx");

            session.getTransaction();

            System.out.println("Saving ...");
            session.save(st);

            session.getTransaction().commit();

            System.out.println("Done!!!");

        } finally {
            session.close();
            f.close();
        }

    }

}
package com.hibernate.entity;

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

@Entity
@Table(name="hbstudent")
public class student {
    @Id
    @Column(name="id")
    private int id;

    @Column(name="first")
    private String firstname;

    @Column(name="last")
    private String lastname;

    @Column(name="email")
    private String email;

public student (){
}

public student(String firstname, String lastname, String email) {
    this.firstname = firstname;
    this.lastname = lastname;
    this.email = email;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getFirstname() {
    return firstname;
}

public void setFirstname(String firstname) {
    this.firstname = firstname;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

@Override
public String toString() {
    return "student [id=" + id + ", firstname=" + firstname + ", lastname="
            + lastname + ", email=" + email + "]";
}



}
文件student.java:

package com.hibernate.demo;

import com.hibernate.entity.student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class SaveStudent {

    public static void main(String[] args) {

        SessionFactory f = new Configuration()
                        .configure("hibernate.cfg.xml")
                        .addAnnotatedClass(student.class)
                        .buildSessionFactory();

        Session session = f.getCurrentSession();

        try {
            System.out.println("Creating student...");
            student st = new student("X","X","xx@xx.xx");

            session.getTransaction();

            System.out.println("Saving ...");
            session.save(st);

            session.getTransaction().commit();

            System.out.println("Done!!!");

        } finally {
            session.close();
            f.close();
        }

    }

}
package com.hibernate.entity;

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

@Entity
@Table(name="hbstudent")
public class student {
    @Id
    @Column(name="id")
    private int id;

    @Column(name="first")
    private String firstname;

    @Column(name="last")
    private String lastname;

    @Column(name="email")
    private String email;

public student (){
}

public student(String firstname, String lastname, String email) {
    this.firstname = firstname;
    this.lastname = lastname;
    this.email = email;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getFirstname() {
    return firstname;
}

public void setFirstname(String firstname) {
    this.firstname = firstname;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

@Override
public String toString() {
    return "student [id=" + id + ", firstname=" + firstname + ", lastname="
            + lastname + ", email=" + email + "]";
}



}
以下是我的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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
  <groupId>hibernate-tuto</groupId>
  <artifactId>hibernate-tuto</artifactId>
  <version>0.0.1-SNAPSHOT</version>


      <dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>ejb3-persistence</artifactId>
        <version>3.3.2.Beta1</version>
        <type>pom</type>
    </dependency>

        <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.6</version>
    </dependency>


    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.5.6-Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-cglib-repack</artifactId>
        <version>2.1_3</version>
    </dependency>

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
    </dependency>
                 <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.6</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.6</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm</artifactId>
    <version>4.0</version>
</dependency>
            <dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.1</version>
</dependency>
            <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

            <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>ejb3-persistence</artifactId>
    <version>3.3.2.Beta1</version>
</dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.6.0.Beta2</version>
        <type>pom</type>
    </dependency>
    <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.3</version>
</dependency>

            <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>ejb3-persistence</artifactId>
    <version>3.3.2.Beta1</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.6.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate.common</groupId>
    <artifactId>hibernate-commons-annotations</artifactId>
    <version>5.0.1.Final</version>
</dependency>



<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>



    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.6.0.Beta2</version>
        <type>pom</type>
    </dependency>

    </dependencies>
</project>

4.0.0
冬眠芭蕾舞团
冬眠芭蕾舞团
0.0.1-快照
org.hibernate
ejb3持久性
3.3.2.1
聚甲醛
org.slf4j
slf4j api
1.6.6
org.hibernate
休眠注释
3.5.6-最终版本
org.hibernate
休眠cglib重新打包
2.1_3
mysql
mysql连接器java
5.1.6
org.slf4j
slf4j api
1.6.6
org.slf4j
slf4j-log4j12
1.6.6
log4j
log4j
1.2.16
org.ow2.asm
asm
4
cglib
cglib
3.1
公用记录
公用记录
1.1.3
mysql
mysql连接器java
5.1.6
org.hibernate
ejb3持久性
3.3.2.1
org.hibernate
冬眠
3.6.0.2
聚甲醛
公地io
公地io
2.3
org.hibernate
ejb3持久性
3.3.2.1
org.hibernate
冬眠核心
5.2.6.最终版本
org.hibernate.common
hibernate commons注释
5.0.1.最终版本
org.hibernate.javax.persistence
hibernate-jpa-2.1-api
1.0.0.1决赛
org.hibernate
冬眠
3.6.0.2
聚甲醛
休眠配置文件:

<!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>

        <!-- JDBC Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/student?useSSL=false</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool settings ... using built-in test pool -->
        <property name="connection.pool_size">1</property>

        <!-- Select our SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo the SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Set the current session context -->
        <property name="current_session_context_class">thread</property>

    </session-factory>

</hibernate-configuration>

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/student?useSSL=false
根
1.
org.hibernate.dialogue.mysqldialogue
真的
线
我得到的错误是:

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" java.lang.NoSuchMethodError: org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.<init>(Lorg/hibernate/boot/spi/MetadataBuildingOptions;)V
    at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.generateDefaultReflectionManager(MetadataBuilderImpl.java:742)
    at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:715)
    at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:127)
    at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:135)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:654)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
    at com.hibernate.demo.SaveStudent.main(SaveStudent.java:16)
log4j:WARN找不到记录器(org.jboss.logging)的appender。
log4j:警告请正确初始化log4j系统。
log4j:请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 更多信息。
线程“main”java.lang.NoSuchMethodError中出现异常:org.hibernate.cfg.annotations.reflection.JPAMetadataProvider。(Lorg/hibernate/boot/spi/MetadataBuildingOptions;)V
位于org.hibernate.boot.internal.MetadataBuilderImpl$Metadatabuildingoptions impl.generateDefaultReflectionManager(MetadataBuilderImpl.java:742)
位于org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.(MetadataBuilderImpl.java:715)
位于org.hibernate.boot.internal.MetadataBuilderImpl。(MetadataBuilderImpl.java:127)
位于org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:135)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:654)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
位于com.hibernate.demo.SaveStudent.main(SaveStudent.java:16)

删除以下依赖项

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.5.6-Final</version>
    </dependency>

org.hibernate

考虑制作一个Log4j.properties文件,将其添加到类路径中。根据需要,您只需添加行BasicConfigurator.configure();为了解决您的问题,这是因为您的hibernate依赖项之间存在冲突。为什么要添加这么多不同版本的相同依赖项?