唯一性校验

NC6系列 唯一性校验有标准的API可以使用,需要注意的需要依赖元数据文件

使用方式

1. 将需要唯一性校验的元数据字段的注册到唯一性 校验规则表中

2. 代码调用通用校验规则类

示例,客户名称和编码 支持唯一性校验

1. 参考如下sql 查询出来 名称和编码字段的 元数据ID

--e4f48eaf-5567-4383-a370-a59cb3e8a451
select id from md_class where defaulttablename='bd_customer';
--客户名称 1ab14778-78b5-484b-8871-f57e7f45bc00
select displayname, id from md_property where classid='e4f48eaf-5567-4383-a370-a59cb3e8a451';

2. 客户名称的ID是1ab14778-78b5-484b-8871-f57e7f45bc00

唯一性校验

3. 拼装如下两个sql

Insert into BD_UNIQUERULE 

(DATAORIGINFLAG,DR,ERRORCODE,ISCHECKNULL,ISDEFAULT,MDCLASSID,PK_RULE,RULECONTENT,RULECONTENT2,RULECONTENT3,RULECONTENT4,RULECONTENT5,RULECONTENT6,TS) 
values (1,0,'32002','N','Y','e4f48eaf-5567-4383-a370-a59cb3e8a451','0001Z0100000000A7J8Z','名称唯一性',null,null,null,null,null,'2018-01-02 12:39:30');

Insert into BD_UNIQUERULE_ITEM 

(DATAORIGINFLAG,DR,MDCOLUMNID,MDCOLUMNNAME,PK_RULE,PK_RULEITEM,TS) 
values (1,0,'1ab14778-78b5-484b-8871-f57e7f45bc00','客户名称','0001Z0100000000A7J8Z','0001Z0100000000A7J90','2018-01-02 12:40:03');

检查一下

select * from bd_uniquerule where mdclassid='e4f48eaf-5567-4383-a370-a59cb3e8a451' ;
select * from bd_uniquerule_item where pk_rule='0001Z010000000047J8Z';

4. 代码调用

protected void insertValidateVO(T vo) throws BusinessException {

IValidationService validateService = ValidationFrameworkUtil
.createValidationService(getInsertValidator());
validateService.validate(vo);
}