从EntityCondition获取SQL命令

时间:2015-07-23 11:24:01

标签: ofbiz

我有一个EntityCondition,我想从中获取SQL。

例如:

EntityCondition: partyId = 'admin'
-> SQL:  party_id = 'admin'

我试图在OFBiz项目中找到,但我没有找到任何东西。

2 个答案:

答案 0 :(得分:3)

OFBiz中有一般规则:实体和字段在CamelCase中定义,如PartyAttribute或productId。实体以大写字母开头(如Java类),字段以小写字母开头(如Java类属性)。

实体或字段内的大写字母转换为" _ [小写]"。

所以

EntityCondition: partyId = 'admin'
-> SQL:  party_id = 'admin'

实体PartyAttribute的完整选择将是

SELECT * FROM PARTY_ATTRIBUTE WHERE PARTY_ID = 'admin'

您可以尝试

makeWhereString(ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, DatasourceInfo datasourceInfo)

以编程方式实现此目标,但我还没有尝试过。

答案 1 :(得分:1)

\ofbiz_src\framework\entity\src\org\ofbiz\entity\datasource\GenericDAO.java 您会看到类似的内容(在 Apache Ofbiz 13 中,它大约位于 808 行或附近)

makeOffsetString(sqlBuffer, findOptions);
String sql = sqlBuffer.toString();

添加一行代码打印查询

makeOffsetString(sqlBuffer, findOptions);
String sql = sqlBuffer.toString();
System.out.println("SQL query: >>>" + sql);

通过这种方式,您只能看到带有参数?的查询,而在现实世界中您无法看到参数?的值,例如Hibernate中的HQL查询日志。