在EORow或者VORow中對資料進行重複性校驗

2021-09-08 04:39:58 字數 3194 閱讀 2437

需求:在設定付款條件時不允許賬期+付款方式重複。

由於本次需求僅需要對vo快取中的資料進行重複性校驗,所以僅需進行快取遍歷即可,不需要校驗資料庫。

方式1,在eorow的進行資料校驗。

public

void

setpaymenttermsid(number value)

setattributeinternal(paymenttermsid, value);

}public

void

setpaymentmethod(string value)

setattributeinternal(paymentmethod, value);

}public

void

validaterepeat(number payterms,string paymethod,string cloumn)

if("method".equals(cloumn))

throw

newoaattrvalexception(oaexception.typ_entity_object,

getentitydef().getfullname(),

getprimarykey(),

"payprovisiontempid", currentstr,

"cux",

"cux_po_pay_provi_validation"); //

message name

} }}

2.在vorow中進行校驗,

public

void

setpaymenttermsid(number value)

setattributeinternal(paymenttermsid, value);

}public

string getpaymentmethod()

public

void

validaterepeat(number payterms,string paymethod,string cloumn)

if("method".equals(cloumn))

throw

newoaattrvalexception(oaexception.typ_view_object,

getviewobject().getfullname(),

getkey(),

"payprovisiontempid", currentstr,

"cux",

"cux_po_pay_provi_validation"); //

message name

} }}

在實際的使用中存在以下需求,不僅要對vo中未提交的快取進行校驗,同時要校驗資料庫中已存在的值。

方法1.使用標準的同時掃瞄eorow和table的方式,如果存在結果集,則說明該值已存在。

參考:同時查詢資料庫和快取中的資料

public

boolean

attachmentexistsincacheordb( string entityname, string pkvalues)

vo.addquerymode(vo.query_mode_scan_database_tables |vo.query_mode_scan_entity_rows);

viewcriteria vc =vo.createviewcriteria();

viewcriteriarow vcr =vc.createviewcriteriarow();

//設定標準查詢引數,可以多個,引數與attribute型別一定要一致

vcr.setattribute("entityname", entityname);

vcr.setattribute("pk1value", pkvalues[0]);

vcr.setconjunction(viewcriteriarow.vcrow_conj_and);

vc.addelement(vcr);

vc.setcriteriamode(viewcriteria.criteria_mode_query |viewcriteria.criteria_mode_cache);

vo.clearcache();

vo.reset();

vo.setwhereclause(

null

); vo.setwhereclauseparams(

null

); vo.setmaxfetchsize(-1);

vo.executequery();

if(vo.hasnext())

} else

return

atchexists;

}

方法二:在eo或者vo快取中進行校驗之後再呼叫查詢方法查詢資料庫中是否已存在值

eorowimpl

public

void

setitemcategoryid(number value)

}setattributeinternal(itemcategoryid, value);

}public

static

categoryentityexpert getcategoryentityexpert(oadbtransaction txn)

public

static

categoryentityexpert getcategoryentityexpert(oadbtransaction txn)

categoryentityexpert類

mport oracle.jbo.domain.number;

import

import

public

class categoryentityexpert extends

oaentityexpert

return

exists;}}

categoryidvvo1是在am中例項化的validatevo,通常vvo就是用於驗證的vo

在vi或者vim中顯示行號

1.為了顯示行號,在vi vim編輯器中執行一下命令中的一條 set number 或者 set nu 2.為了關閉行號,在vi vim編輯器中執行下面命令 set nu 如果你想要每次啟動vi vim,顯示行號,新增下面的命令到 vimrc檔案中,如果.vimrc檔案不存在,則建立該檔案。set ...

r或者 r 在python中的意思

這兩個都是python的轉譯字元,類似於 r,d,f 有過c語言基礎的朋友應該會比較容易上手吧?簡單的例子 a 123 b hello,format a b hello,123 上面的例子用的是format,跟直接 效果類似。例子二 a 123 b hello,r a b hello,123 這對一...

在CMD或者Terminal中,改變輸出字元的顏色

網上很多文章都是講的基於linux的terminal的,但是他們居然事先沒有強調他們的系統,我們知道linux與windows字元編碼還是有很大區別的,同乙個符號代表不同的意思。比如 其實他們應該都是基於linux的,因為我發現window的cmd或者powershell,這些命令不管用。就算lin...