请问这样写有问题吗

#sql("find")
  SELECT m.* FROM T_USER m where 1=1
  #include("data_auth.sql",code="user")
  ORDER BY m.OP_TIME DESC
#end
###data_auth.sql
#set(user=getCurrentUser())###这是调用后台方法
#set(dataAuth=getDataAuth(user.id,code))###这是调用后台方法
#if(dataAuth==0)
  and #(aliasStr)OP_USER_ID=#para(user.id)
#
public int getDataAuth(String userId, String code) {
    Kv kv = Kv.by("code", code).set("userId", userId);
    Record record = Db.template("user.findMaxDataAuth", kv).findFirst();
    if (record != null) {
	Integer dataAuth = record.getInt("DATA_AUTH");
	if (dataAuth != null) {
	    return dataAuth;
	}
    }
    return 3;
}

后台getDataAuth方法中分别两次调用Db.template得到的结果是不一样的,第一次得到的SQL有可能是错误的,请问这样的写法有问题吗?

评论区

JFinal

2019-08-14 20:49

用法上可以,可能是代码逻辑有错误,检查一下 getCurrentUser() 方法有没有线程安全问题

此外,解决这类问题通过单步调试是必然的,实时动态了解变量的变化