我有一个EntityCondition,我想从中获取SQL。
例如:
EntityCondition: partyId = 'admin'
-> SQL: party_id = 'admin'
我试图在OFBiz项目中找到,但我没有找到任何东西。
答案 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查询日志。