NutzCN Logo
问答 dao().create(tableName, nutMap, true);
发布于 1184天前 作者 qq_ce553d56 1132 次浏览 复制 上一个帖子 下一个帖子
标签:
String tableName = "t_xxxx_xx"
NutMap nutMap = NutMap.NEW();
nutMap.addv(DbDataUtil.key2DbColumn("survey_no"), "varchar(100)");
nutMap.addv(DbDataUtil.key2DbColumn("policy_no"), "varchar(100)");
dao().create(tableName, nutMap, true);

报错提示org.postgresql.util.PSQLException: 错误: 关系 "t_xxxx_xx" 不存在

9 回复

你这样写, 生产的 nutMap是啥样子的?

就是这样的“d_survey_no,varchar(100)”kv对,生成的sql是正常的,拿去客户端上执行是可以创建表成功的。

兽总,我找到原因了,是因为dao().create(tableName, nutMap, true);执行在一个事务的方法里,看了nutDao类里的create源码有个exists()方法会先判断要创建的这个表存在不,不存在就抛了个PSQLException说关系 "t_xxxx_xx" 不存在,然后后面的执行自然就被事务中断了,故而表没法儿创建成功了。我把我写的这个大方法的事务注解去了,自然就执行成功了。但是我这个方法里除了创建表还有update其他表的操作,我还是想保持他们的一致性,这个得怎么解决呢,还请兽总指点。

再次去跟源码发现是因为PSQLException 没有被catch住导致被抛出致使进程中断了

nutmap这么组装拼出来的sql,不是我想要的。兽总,关于这个dao().create(tableName, nutMap, true)方法有啥示例代码可参考的没,我这么操作好像是打开的方式不对呢

你想要得到怎么样的SQL?

我想要自己可以设置数据库字段对应的类型的sql,我今天试了下nutmap的格式value里面放字段类型,结果出来的sql都是varchar()

还不如直接生成SQL ... 何必绕一圈走dao.create 呢...

倒是会按值的类型进行自动判断

添加回复
请先登陆
回到顶部