簡體   English   中英

錯誤! 在Eclipse上連接Hibernate和Postgresql

[英]Error! connect Hibernate and Postgresql on eclipse

當我在Eclipse上運行項目時,出現錯誤:

2013年6月8日6:11:46 org.hibernate.annotations.common.Version

INFO:HCANN000001:休眠公共注釋

{4.0.2.Final} 2013年6月8日,上午6:11:46 org.hibernate.Version logVersion

INFO:HHH000412:Hibernate Core {4.2.2.Final}初始SessionFactory

創建失敗。 java.lang.ExceptionInInitializerError異常

線程“ main”處的java.lang.ExceptionInInitializerError

HibernateUtil。(HibernateUtil.java:13)在

PublisherDAO.addPublisher(PublisherDAO.java:5)在

BookApp.main(BookApp.java:12)由以下原因引起:

java.lang.ExceptionInInitializerError在

org.hibernate.cfg.Configuration.reset(Configuration.java:309)位於

org.hibernate.cfg.Configuration。(Configuration.java:275)在

org.hibernate.cfg.AnnotationConfiguration。(AnnotationConfiguration.java:50)上的org.hibernate.cfg.Configuration。(Configuration.java:279)

在HibernateUtil。(HibernateUtil.java:8)...另外2個原因

創建人:java.lang.NullPointerException

org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)

在org.hibernate.cfg.Environment。(Environment.java:221)...

另外7個

和代碼演示:

1)hibernate.cfg.xml

<?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>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.password">postgres</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/postgres</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.default_schema">public</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <mapping class="Publisher"/>
    </session-factory>
</hibernate-configuration>

2)BookApp.java

import java.util.*;
import org.hibernate.*;
public class BookApp {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("hello world!");
        PublisherDAO dao=new PublisherDAO();
        dao.addPublisher("003", "Manning", "Mit");
    }

}

3)HibernateUtil.java

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
    private static final SessionFactory sessionFactory;

    static{
        try{
            sessionFactory=new AnnotationConfiguration().configure()
                    .buildSessionFactory();

        }catch(Throwable ex){
            System.err.println("Initial SessionFactory creation failed. "+ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

4)Publisher.java

import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;

@Entity
@Table(name="publisher")
public class Publisher {
    private String code;
    private String publisher_name;
    private String address;

    @Id
    @Column(name="code")
    @GeneratedValue(strategy=IDENTITY)
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }

    @Column(name="publisher_name")
    public String getPublisher_name() {
        return publisher_name;
    }
    public void setPublisher_name(String publisher_name) {
        this.publisher_name = publisher_name;
    }

    @Column(name="address")
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

5)PublisherDAO.java

import java.util.*;
import org.hibernate.*;
public class PublisherDAO {
    public void addPublisher(String code, String name, String address){
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Publisher publisher=new Publisher();
        publisher.setCode(code);
        publisher.setPublisher_name(name);
        publisher.setAddress(address);
        session.save(publisher);
        session.getTransaction().commit();
    }
}

我非常努力,但錯誤並沒有解決。請幫助我!

他們的關鍵部分似乎是:

java.lang.NullPointerException 
at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
at org.hibernate.cfg.Environment.(Environment.java:221) 

這表明Hibernate無法讀取您的配置。 出乎意料的是null。 由於您沒有指定確切的Hibernate版本,因此我無法查看源代碼來說明什么,因此,我建議您這樣做。 ConfigHelper.java第170行中,查看確切的Hibernate版本中的Hibernate正在做什么,該版本應在getResourceAsStream方法中。

如果仍然遇到問題,請將源添加到調試源路徑,然后在調試器下運行程序。 將調試器設置為捕獲未捕獲的異常(通常是默認值,但是可能需要處理全局異常處理程序)。 或在感興趣的行上設置一個斷點。 然后運行程序。 當它崩潰時,請向下查看堆棧,以查看它與您編寫的內容有何聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM