测试是,类拥有@Name是可以正常更新数据,仅有@PK时无法跟新数据~
类:
@Table("t_sys_employee")
@PK(value = { "id","bm" })
public class SysEmployee {
//@Name//字符主键
@Prev(els = { @EL("uuid()") })
@Comment("uuid主键唯一")//字段注释
@ColDefine(type = ColType.VARCHAR,width = 32)//字段类型
@Column("uuid")
private String id;
@Comment("版本")
@Column(version=true)
private long version;
@Prev(els = { @EL("uuid()") })
@Comment("员工编号")//字段注释
@ColDefine(type = ColType.VARCHAR,width = 32)//字段类型
测试代码:(这个查询后应该是直接提交数据库的吧,因为@Name时是直接就更新了数据库的)
sysEmployee = dao.fetch(SysEmployee.class, Cnd.where("name", "=", username).and("password", "=", password));
if(sysEmployee != null){
sysEmployee.setBm("9003");
dao.updateWithVersion(sysEmployee);
sysCompany = dao.fetch(SysCompany.class, Cnd.where("bm", "=", sysEmployee.getGs_bm()));
}
日志:
2017-10-31 21:58:24 select * from(select row_number()over(order by __tc__)__rn__,* from(select top 1 0 __tc__, * FROM t_sys_employee WHERE name=? AND password=?)t)tt where __rn__ > 0 order by __rn__
| 1 | 2 |
|-------|--------|
| admin | 123456 |
For example:> "select * from(select row_number()over(order by __tc__)__rn__,* from(select top 1 0 __tc__, * FROM t_sys_employee WHERE name='admin' AND password='123456')t)tt where __rn__ > 0 order by __rn__ "
2017-10-31 21:58:24 UPDATE t_sys_employee SET gs_bm=?,md_bm=?,name=?,password=?,role=?,sex=?,mobile=?,wage=?,position=?,entryDate=?,sales=?,state=? ,version=version+1 WHERE uuid=? AND bm=? AND version=?
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|------|------|-------|--------|------|------|------|------|------|------|------|------|----------------------------------|------|---|
| NULL | NULL | admin | 123456 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 896a33af3ab84f5096350b41d9ab47e4 | 9003 | 0 |
For example:> "UPDATE t_sys_employee SET gs_bm='NULL',md_bm='NULL',name='admin',password='123456',role='NULL',sex='NULL',mobile='NULL',wage='NULL',position='NULL',entryDate='NULL',sales='NULL',state='NULL' ,version=version+1 WHERE uuid='896a33af3ab84f5096350b41d9ab47e4' AND bm='9003' AND version=0"
2017-10-31 21:58:24 select * from(select row_number()over(order by __tc__)__rn__,* from(select top 1 0 __tc__, * FROM t_sys_company WHERE bm IS NULL )t)tt where __rn__ > 0 order by __rn__
这里显示的bm = 9003,但是数据库里没有任何变化,还是原来的数据,不知道是什么原因造成的~也没有报错信息