2020-05-08 12:56

@JFinal “不该自己处理”是什么设置?要在Jifnal那里设置一个Handler?这个里面写什么代码么?

2020-04-08 09:58

@zhangtianxiao

Record user = new Record().set(TestEntity.Pc_Name, "James").set(TestEntity.Pc_Age,18)
.set(TestEntity.Pc_Id, 3)
.set(TestEntity.Pc_TestType, new TestChild("1","3"))
.set(TestEntity.Pc_T_time, LocalTime.now());
Db.update("ttest", user);

public class MyPostgreSqlDialect extends PostgreSqlDialect {

@Override
public void fillStatement(PreparedStatement pst, List paras) throws SQLException {

System.out.println("777");

fillStatementHandleDateType(pst, paras);
}

@Override
public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {

System.out.println(12346);
for(Object i :paras) {
if(i.getClass()==TestChild.class) {
TestChild tc=(TestChild) i;
i=tc.getNum_id()+tc.getUu_id();
}
}

fillStatementHandleDateType(pst, paras);
}
}


Exception in thread "main" com.jfinal.plugin.activerecord.ActiveRecordException: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of com.xxx.module.test.TestChild. Use setObject() with an explicit Types value to specify the type to use.
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:698)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:713)
at com.jfinal.plugin.activerecord.Db.update(Db.java:506)
at myJfinalUndertow.RecordTest.main(RecordTest.java:38)
Caused by: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of com.tc.module.test.TestChild. Use setObject() with an explicit Types value to specify the type to use.
at org.postgresql.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:978)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.setObject(DruidPooledPreparedStatement.java:480)
at com.jfinal.plugin.activerecord.dialect.Dialect.fillStatementHandleDateType(Dialect.java:312)
at common.persistence.typehandler.MyPostgreSqlDialect.fillStatement(MyPostgreSqlDialect.java:31)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:277)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:678)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:696)
... 3 more

刚刚测试了一下,将实体类型的数据用于Set,进行update测试,但无法到达fillStatement这里,在之前抛出了异常

2020-04-08 09:47

@zhangtianxiao 那调用fillStatement这个方法的方法又在哪个类?因为也想要根据继承Model的类的class配上内部注解来实现自动转换

2020-04-07 19:33

@zhangtianxiao 我准确的说明,是调用jdbc之前的过程,持久化框架是能干这件事的,不就有一个例子么,mybatis它就是啊,这个框架提供了typeHandler抽象类,让开发者在jdbc访问数据库之前,实现自己自定义类型转换处理。那持久层框架应该是能干的。

2020-04-07 17:22

@JFinal 那这种情况我该怎么办,我写了一个实体A,专门处理特殊的数据,实体A数据更新到数据库里的方式就是转成字符串存到varchar里。在jdbc调用更新写入之前,将实体A其转成t特殊格式的字符串存到varchar里。不能自动调用的话,
那每次编写Set方法处理特殊数据的实体,都要调用手动写转换方法啊

2020-04-07 16:33

数据插入,更新,删除,用的是哪个类哪个方法?

2020-04-07 16:32

@JFinal 为此我看了一下RecordBuilder源码,只有buid,和buildLabelNamesAndTypes,build有一个ResultSet类型的参数,有这个,就代表是获取结果集的应该是,那保存方法是哪个什么? jdbc更新数据到数据库用的是PreparedStatement,可是我在RecordBuilder里看了一下,没看到有PreparedStatement类型参数的方法

2020-04-07 15:07

@zhangtianxiao 扩展方言折腾是因为Json化的问题,psql本身拥有的类型转换操作符,可能不一定满足json序列化的需要

2020-04-06 20:40

@JFinal 我还是不理解,请问一下,要创建一个ModelBuilder、RecordBuilder的实例。设置到 DruidPlugin或ActiveRecordPlugin里?用什么方法设置?

2020-03-07 21:04

@JFinal 你确定是这个么?我根据eclipse的代码提示里发现,没有发现UndertowServer.create方法的重载里有三个形式参数的方法。而且/var/my/path/undertow.txt,这种看起来应该是指项目内d:/WorkSpace/xx项目/src/mian/resources/var/my/path/undertow.txt,但我想要的设置加载undertow.txt文件所在的路径不是位于“src/mian/resources”目录内,而是以外的其他的目录。我想要用绝对路径作为参数,而不是classpath