2012-04-29 24 views
5

Tôi đang cố gắng chạy một thế giới hello cho: Spring/Hibernate với HSQLDB và hồ bơi kết nối C3PO. cùng một mã hoạt động với mySQL (chỉ với phương ngữ và trình điều khiển khác nhau)'hibernate.dialect' phải được thiết lập khi không có kết nối nào có sẵn

Tôi đã chạy cơ sở dữ liệu và tôi có thể kết nối với GUI bằng GUI. Nhưng khi tôi cố gắng chạy ứng dụng của mình, tôi đang gặp phải lỗi khởi động. Dưới đây là chi tiết:

1: lỗi -

INFO: Khởi xuân gốc WebApplicationContext [LỖI] [hồ bơi-2-thread-1 05:20:08] (JDBCExceptionReporter.java: logExceptions: 101) Các kết nối không thể có được từ cơ sở dữ liệu bên dưới! [ERROR] [pool-2-thread-1 05:20:08] (ContextLoader.java:initWebApplicationContext:220) Khởi tạo ngữ cảnh không thành công org.springframework.beans.factory.BeanCreationException: Lỗi tạo bean có tên 'sessionFactory' được định nghĩa trong tài nguyên ServletContext [/WEB-INF/hibernate-context.xml]: Yêu cầu phương thức init không thành công; ngoại lệ lồng nhau là org.hibernate.HibernateException: 'hibernate.dialect' phải được đặt khi không có kết nối nào có sẵn tại org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1420) tại org.springframework.beans .factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) ... ...

2: ngủ đông-context.xml -

<tx:annotation-driven transaction-manager="transactionManager" /> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.gleeb.sample.model" /> 
    <property name="hibernateProperties"> 
     <props> 
      <!-- <prop key="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> --> 
      <prop key="dialect">org.hibernate.dialect.HSQLDialect</prop> 
      <prop key="show_sql">false</prop> 
      <prop key="hbm2ddl.auto">create</prop> 
     </props> 
    </property> 
</bean> 

     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
    destroy-method="close" p:driverClass="org.hsqldb.jdbc.JDBCDriver" 
    p:jdbcUrl="jdbc:hsqldb:hsql://localhost/testdb" p:user="sa" 
    p:password="" p:acquireIncrement="5" p:idleConnectionTestPeriod="60" 
    p:maxPoolSize="100" p:maxStatements="50" p:minPoolSize="10" /> 

<!-- Declare a transaction manager --> 
<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
    p:sessionFactory-ref="sessionFactory" /> 

Trả lời

0

tôi có tài sản nhà máy phiên vớiTiền tố.

<property name="hibernateProperties"> 
    <value> 
     hibernate.dialect=org.hibernate.dialect.HSQLDialect 
     hibernate.hbm2ddl.auto=update 
     hibernate.show_sql=false 
     hibernate.format_sql=false 
    </value> 
</property> 
+0

Thật ngạc nhiên là nó đã làm điều gì đó. không sửa vấn đề nhưng bây giờ tôi nhận được: [LRI] [pool-2-thread-1 06:03:04] (JDBCExceptionReporter.java:logExceptions:101) Các kết nối không thể có được từ cơ sở dữ liệu cơ bản !, nhưng tôi chắc chắn nó không liên quan gì đến vấn đề thực sự ẩn dưới đó. – Gleeb

+0

@gleeb Viết một chương trình đơn giản sử dụng JDBC để kết nối với HSQL DB của bạn và xem liệu có hoạt động hay không. Có thể ít nhất là loại bỏ một vấn đề – Sudhakar

+0

Chạy máy chủ với im lặng = false và kiểm tra kết nối.Hãy thử p: user = "SA" – fredt

1

Theo như tôi có thể nói, nó không thể vượt qua trong phương ngữ như một giá trị thiết lập trên hibernateProperties lĩnh vực một phiên Factory Spring, ít nhất nếu bạn cũng đang sử dụng configLocation tài sản trên nó.

hibernate.cfg.xml của tôi:

<?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.dialect">org.hibernate.dialect.DB2Dialect</property> 
    <property name="hibernate.search.autoregister_listeners">false</property> 
    [etc...] 

My phù hợp cấu hình bối cảnh nhà máy phiên:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 
    <property name="dataSource" ref="dataSource"/> 
     <property name="hibernateProperties"> 
     <props> 
      <!--<prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>--> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.generate_statistics">false</prop> 
      <prop key="hibernate.default_schema">xxx</prop> 
     </props> 
    </property> 
</bean> 

Nếu tôi bỏ ghi chú prop phương ngữ trong file bối cảnh, và nhận xét nó ra từ trong tệp hibernate.cfg.xml Tôi gặp phải ngoại lệ tương tự như OP:

Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 

Tuy nhiên nếu tôi chạy với thứ e trên cấu hình (nhận xét trong tập tin ngữ cảnh, uncommented trong hibernate.cfg.xml), nó hoạt động, và tôi thấy SQL định dạng ngủ đông, cho thấy rằng các thuộc tính ngủ đông khác đang được thiết lập bởi các tập tin ngữ cảnh.

Các vấn đề liên quan