查看ofbiz生成的sql
来源:互联网 发布:vb key value 编辑:程序博客网 时间:2024/06/07 20:50
查看SQL语句:在ofbiz中通过实体来进行数据的维护。将SQL隐藏在了下层,但是有时候,作为开发人员希望了解一个操作都进行了哪些SQL操作,
通过\framework\base\config\debug.properties进行设置我们就可以在runtime目录下的logs的,ofbiz.log的日志中看到我们想看到的信息了。
我们需要将print.verbose设置为true;
但是修改后,发现启动不了了。我使用的是ofbiz 16.11.02版本。报如下异常:
org.xml.sax.SAXException: A transaction error occurred reading datajava.lang.NullPointerExceptionat org.apache.ofbiz.entity.util.EntitySaxReader.parse(EntitySaxReader.java:240)at org.apache.ofbiz.entity.util.EntitySaxReader.parse(EntitySaxReader.java:186)at org.apache.ofbiz.entity.util.EntitySaxReaderTests.parse(EntitySaxReaderTests.java:62)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:112)at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:364)at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.NullPointerExceptionat org.apache.ofbiz.entity.util.EntitySaxReader.endElement(EntitySaxReader.java:404)at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)at org.apache.ofbiz.entity.util.EntitySaxReader.parse(EntitySaxReader.java:225)... 45 more
打开EntitySaxReader.java文件,找到404行:
分析异常日志找到,异常原因是空指针异常,说明helper为null时,执行这行代码会报错。所以进行如下修改:
if(helper != null){helper.findByPrimaryKey(currentValue.getPrimaryKey());}这样就能正常启动了。
虽然这种方式可以看到SQL,但是同时也为我们引进来了很多自己可能不关心的信息,为了找到我们想的信息,我们可能要为此付出更多的精力去分析日志信息。而我们所需要的仅仅是看一下SQL。仅此而已,为此我们可以自己修改一下,让它输出到我们需要的地方:
在这里修改即可。为了简化我们人为的把SQL记录为错误日志。因为错误的日志是少数。
修改后代码:
这样我们就可以在runtime目录下的logs的,error.log中看到我们想要的SQL信息了。
阅读全文
0 0
- 查看ofbiz生成的sql
- 如何查看OFBIZ生成的SQL
- 如何查看OFBIZ生成的SQL
- ofbiz的webservice接口生成
- 查看entity生成的sql语句
- 查看Linq生成的SQL语句
- C# 查看EF生成的SQL语句
- ofbiz的form是如何生成的
- thinkphp如何查看方法自动sql生成的sql语句
- NHibernate 查看生成的sql语句的方法
- 查看LINQ生成SQL语句的几种方法
- 查看LINQ生成SQL语句的几种方法
- linq to entity 查看生成的SQL语句
- .NET 查看 EF 查询生成的SQL 语句
- 如何查看存储过程中动态生成的sql
- 查看LINQ生成SQL语句的几种方法
- 查看LINQ生成SQL语句的几种方法
- ofbiz的webservice接口提供(1)-WSDL的生成
- 启用或禁用更改块跟踪 (Changed Block Tracking, CBT)的两种方式
- django admin管理添加应用
- Maven依赖传递、依赖传递排除、依赖冲突
- Activiti 工作流 获取流程定义的图片 04
- EASYUI
- 查看ofbiz生成的sql
- TCP、UDP、IP 协议分析
- leetcode 407. Trapping Rain Water II 寻找水+最短木桶现象
- ssh远程启动weblogic提示BEA-090152错误(Demo trusted CA certificate is being used in production mode)
- EasyUI tabs选项卡切换触发不同的事件并绑定到table中
- MySQL中select * for update锁表的范围
- 移动端 一些注意事项
- ios入门:自适应屏幕旋转
- 使用lua语言--排序