2012-05-24 45 views

回答

21
<property name="openjpa.Log" value="SQL=Trace" /> 

启用记录所有SQL语句,减去参数值。

<property name="openjpa.ConnectionFactoryProperties" value="PrintParameters=true" /> 

启用SQL参数的记录。

Logging documentation

4

如果你使用log4j的,你可以设置你的log4j.properties文件如下,这将同时显示原生SQL查询和任何参数:

log4j.rootLogger=WARN, CONSOLE 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %t %d{ISO8601} %l - %m%n 

log4j.category.openjpa.jdbc.SQL=TRACE 
+0

您发布的配置不会记录SQL参数。 – Rick

+0

它实际上会记录SQL参数。请看下面的例子的输出:(?????,,,,) INSERT INTO TCATALOG(UIDPK,CATALOG_CODE,DEFAULT_LOCALE,MASTER,NAME) VALUES [PARAMS =(长)200001(字符串)catalog133835591682111,(字符串)en_US,(int)0,(String)测试目录] – Templar

+1

不够公平。这种行为取决于您使用的OpenJPA版本。 @了解更多详情 - https://issues.apache.org/jira/browse/OPENJPA-1678 – Rick

0

您好我想添加运行持久性。 xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="EHS_PU"> 
     <jta-data-source>mysqlDataSource</jta-data-source> 
     <class>com.ap.entity.EHSDo</class> 
     <class>com.ap.entity.EventDo</class> 
     <properties> 
      <property name="openjpa.Log" value="log4j" /> 
      <property name="openjpa.ConnectionFactoryProperties" value="PrintParameters=true" /> 
     </properties> 
    </persistence-unit> 
</persistence>