2013-08-27 13 views
7

Sto lavorando con molla 3, ibernazione 4. Sto cercando di seguire questo tutorial http://www.mkyong.com/hibernate/hibernate-display-generated-sql-to-console-show_sql-format_sql-and-use_sql_comments/, ma la mia configurazione hibernate è diverso:display Hibernate SQL Per Console (primavera)

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd"> 


    <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with 
     username root and blank password. Change below if it's not the case --> 
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/project"/> 
    <property name="username" value="root"/> 
    <property name="password" value="1234"/> 
    <property name="validationQuery" value="SELECT 1"/> 
    <property name="show_sql" value="true" /> 
    <property name="format_sql" value="true" /> 
    <property name="use_sql_comments" value="true" /> 
    </bean> 


</beans> 

E le proprietà show_sql , format_sql e use_sql_comments non funzionano in questo modo. Ricevo questa eccezione:

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'show_sql' of bean class [org.apache.commons.dbcp.BasicDataSource]: Bean property 'show_sql' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 

Esiste comunque il tutorial per la definizione del bean ??

+0

Quelle sono proprietà Hibernate. Puoi impostarli in hibernate.cfg.xml (se ne hai uno), persistence.xml (se si utilizza JPA), o darli direttamente a un bean factory Spring che crea Hibernate SessionFactory, come LocalSessionFactoryBean. – superEb

+0

Come posso fare l'ultima cosa che hai detto? Non ho hibernate.cfg.xml né persistence.xml. Puoi pubblicare un esempio, per favore? Sto ancora imparando .. – kiduxa

+1

possibile duplicato di [Stampa stringa di query in ibernazione con i valori dei parametri] (http://stackoverflow.com/questions/1710476/print-query-string-in-hibernate-with-parameter-values) – stevedbrown

risposta

19

show_sql non una proprietà di org.apache.commons.dbcp.BasicDataSource. Devi definirlo nella configurazione di fabbrica della sessione. come questo

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="data" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
      <prop key="hibernate.current_session_context_class">thread</prop> 
      <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 
+0

Questa è la risposta alla mia domanda, ma la soluzione di @ gerrytan è complementare. – kiduxa

11

L'approccio più semplice è probabilmente quello di impostare seguente logger di DEBUG:

org.hibernate.SQL 

Se si utilizza log4j, trovare/creare un file log4j.properties sul radice classpath e aggiungere

log4j.logger.org.hibernate.SQL=DEBUG 

See qui per maggiori informazioni sulle proprietà di log4j: http://logging.apache.org/log4j/1.2/manual.html

+0

Darò un upvote perché è stato utile, ma la soluzione di @ashish chaurasia è la risposta alla mia domanda. Grazie comunque;) – kiduxa

+0

Questa sembra essere una risposta migliore e la risposta accettata non funziona per me. –

+0

risposta migliore e semplice – VJS

Problemi correlati