Non sono stato in grado di ottenere ulteriori output di console (per facilitare il debug) da Hibernate nonostante l'impostazione di alcune proprietà nel file hibernate.cfg.xml
. Ad esempio, l'aggiunta della riga <property name="show_sql">true</property>
non ha, infatti, mostrato istruzioni SQL nella console.Come ottengo più messaggi di debug da Hibernate?
Ho anche provato a giocare con il contenuto del file log4j.properties
- come l'impostazione log4j.logger.org.hibernate=debug
- senza fortuna. Cosa mi manca?
Edit: il contenuto del file di sospensione-service.xml sono
<server>
<mbean code="org.jboss.hibernate.jmx.Hibernate"
name="jboss.har:service=Hibernate_SMS">
<attribute name="DatasourceName">java:/SMS_DS</attribute>
<attribute name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>
<attribute name="SessionFactoryName">java:/hibernate/SessionFactory</attribute>
<attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
<attribute name="ShowSqlEnabled">true</attribute>
</mbean>
</server>
Io non sono al 100% sicuro se questo ha in realtà alcun effetto, però. Quel file XML è nel progetto Eclipse che gestisce il mio materiale di database, ma non sembra essere nella directory di distribuzione di JBoss.
Edit 2: Questo è sicuramente distribuito come HAR. Detto questo, sono abbastanza sicuro di aver bisogno di hibernate.cfg.xml
- Ricordo di avere problemi quando un documento di mappatura è stato omesso come una voce in quel file. Credo che la HAR è generato usando Ant - c'è un obiettivo per esso nel file build.xml:
<target name="har" depends="prepare" description="Builds the Hibernate HAR file">
<mkdir dir="${class.root}" />
<mkdir dir="${distribution.dir}" />
<jar destfile="${distribution.dir}/${har.name}">
<!-- include the hbm.xml files -->
<fileset dir="${class.root}">
<include name="**/*.hbm.xml"/>
<include name="com/[redacted]/sms/data/dto/*.class"/>
<include name="com/[redacted]/sms/data/dto/base/*.class"/>
</fileset>
<!-- include jboss-service.xml -->
<metainf dir="${hibernate.dir}">
<include name="hibernate-service.xml"/>
</metainf>
</jar>
</target>
ma quando lo faccio la build formica con XML in modo non corretto, formato nel file di sospensione-service.xml, si non fallisce Aggiornamento Anche l'eliminazione completa del file non causa il fallimento di una build. Qualche idea qui? End Modifica
Suona come ottenere Hibernate alle dichiarazioni uscita SQL dovrebbe (se tutto è impostato correttamente) prendersi cura di esso del tutto - vuol dire che le impostazioni in log4j.properties non farà la differenza qui? - perché in realtà fa cambia l'output quando si esegue ant.
Edit 3: Dopo incorrere in altri problemi strani con i miei dati har
, ho cancellato il file har interamente e ricostruito utilizzando il target Ant har
. All'improvviso tutto funziona! Grazie a Chessplay per la sua straordinaria disponibilità. Non posso dire di sapere esattamente cosa ha fatto alla fine, ma preferirei riconoscere i suoi sforzi piuttosto che scrivere e accettare la mia risposta; Le mie scuse se non sei un "lui".
'hibernate.show_sql' (o,' ShowSqlEnabled' in JBoss mbean) è indipendente dalla configurazione di registrazione; se abilitato stampa sempre SQL su console. L'impostazione di 'org.hibernate.SQL = DEBUG' nella configurazione del logger appropriato farà lo stesso, ma a qualsiasi output configurato per il logger. Entrambi i metodi sono indipendenti l'uno dall'altro (ad esempio, se si imposta entrambi, verrà stampato sql due volte) – ChssPly76