尽管在hibernate.cfg.xml文件中设置了一些属性,我仍无法从Hibernate获得任何更多控制台输出(以帮助调试)。例如,添加该行<property name="show_sql">true</property>实际上并没有在控制台中显示SQL语句。
hibernate.cfg.xml
<property name="show_sql">true</property>
我也尝试过log4j.properties文件的内容-如设置log4j.logger.org.hibernate=debug-没有运气。我想念什么?
log4j.properties
log4j.logger.org.hibernate=debug
编辑: hibernate-service.xml文件的内容是
<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>
不过,我不确定100%是否真的有效。该XML文件位于处理我的数据库内容的Eclipse项目中,但似乎不在JBoss deploy目录中。
编辑2: 绝对可以将其部署为HAR。就是说,我非常确定我需要hibernate.cfg.xml-我记得在映射文件被省略为该文件中的条目时遇到问题。我认为HAR是使用ant生成的- 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>
但是,当我使用hibernate-service.xml文件中格式错误的xml进行蚂蚁构建时,它不会失败。 更新 即使完全删除文件也不会导致构建失败。这里有什么想法吗? 结束更新
听起来像让Hibernate输出SQL语句应该(如果一切都正确设置)完全处理它- 这是否意味着log4j.properties中的设置在这里不会有所不同?-因为这实际上在运行ant时确实 会 更改输出。
编辑3: 在遇到其他奇怪的数据问题后,我har完全删除了har文件,并使用harant构建目标对其进行了重建。突然一切正常!感谢国际象棋对他的帮助。不能说我确切地知道最后做了什么,但是我宁愿承认他的努力,也不愿写出并接受我自己的答案。如果您不是“他”,我深表歉意。
har
正确的属性名称是hibernate.show_sql,它肯定可以工作。
确保您hibernate.cfg.xml是正确的人,并且它会被拾取;您的log4j.properties文件也是如此。我知道这些建议似乎很愚蠢,但它们占“缺少日志记录输出”问题的98%。
更新 :我将更新答案,而不是继续添加评论。您确实需要确保您hibernate- service.xml被JBoss接过。检查的简单方法是向其添加语法错误(例如,在某些元素上省略右花括号),并查看JBoss在重新启动过程中是否爆炸:-)应该将其打包har并部署为构建过程的一部分,因此如果您意识到JBoss 并 没有 捡起它,而是您可以去寻找的地方。我会摆脱冲突的设置hibernate.cfg.xml(例如,您指定为mbean属性的所有内容都不应复制到中hibernate.cfg.xml)。为此,您甚至需要hibernate.cfg.xml吗?如果部署为HAR,则应自动扫描/提取您的映射。
hibernate- service.xml
HAR