今天学习了一点知识:
在使用ofbiz的DynamicViewEntity动态视图的时候,有时候会需要为查询字段赋默认值.sql语句为COALESCE(字段,默认值) ,
在DynamicViewEntity中,则需要这样写:
//往视图中添加表
dynamicView.addMemberEntity("表的别名", "表名");
//调用ComplexAliasField 类,当给一个字段插入默认值时,使用这个方法.多个字段,用ComplexAlias(具体使用方法,类似)
ComplexAliasField complexaliasfield=new ComplexAliasField("表的别名","字段","默认值",null);(注释:此处的null,可以修改为函数function)
//调用ModelReader,构造中的"main",代表的是framework下的entityengine.xml中的entity-model-reader的值,具体值看个人设定,默认为main
ModelReader modelReader=new ModelReader("main");
//定义colNameBuffer进行连接字符
StringBuilder colNameBuffer=new StringBuilder();
//定义fieldTypeBuffer类型,如"varchar","numeric"等,可转换字段的类型.
StringBuilder fieldTypeBuffer=new StringBuilder();
//定义ModelViewEntity ,
ModelViewEntity modelViewEntity=dynamicView.makeModelViewEntity(delegator);
//执行complexaliasfield下的makeAliasColName方法,该方法即为赋默认值
complexaliasfield.makeAliasColName(colNameBuffer, fieldTypeBuffer, modelViewEntity, modelReader);
//将字段添加到动态视图中,最后一个属性,即为插入默认值
dynamicView.addAlias("表的别名","字段名","字段别名",null,false,true,null,complexaliasfield);
这样,在动态视图中,就可以插入默认值.