获取Sequence有两种不同的方法
1.Groovy表达式获取
该方法是view的iterator中创建一行的时候就通过groovy表达式获取Seq中的值并赋值到id字段中,该方法有个缺点:如果事务回滚了或者创建的行没保存,就会造成Seq跳值
1.2.Default Value中选择Expression(表达式)
并填入(new oracle.jbo.server.SequenceImpl(SEQ名称,adf.object.getDBTransaction())).getSequenceNumber()
2.提交事务时候之前获取
该方法是通过在提交事务之前手工获取对应的seq值并赋值到id字段中,是第一个方法很好的补充
2.2.找到java类中的doDML方法,并重写
代码如下
/**
* Custom DML update/insert/delete logic here.
* @param operation the operation type
* @param e the transaction event
*/
protected void doDML(int operation, TransactionEvent e) {
if (operation == DML_INSERT) {
if(this.getCompanyId()==null){
this.setCompanyId((new oracle.jbo.server.SequenceImpl(SEQ名称, this.getDBTransaction())).getSequenceNumber().intValue());
}
}
super.doDML(operation, e);
}




没有评论 :
发表评论