- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
情况是这样的:
PostgreSQL 数据库表有一个字段 dateAdded
是 timestamp
Pojo 模型对象将此字段映射为
class MyModel{
org.joda.time.DateTime dateAdded;
}
我的 Dao 实现是在 Spring JDBC 模板中,它是这样的:
SqlParameterSource parameters = new BeanPropertySqlParameterSource(patient);
jdbcInsert.execute(parameters);
我从客户端读取模型并使用 @Model
构建对象。到目前为止一切都很好。当我执行这个时,数据库抛出一个异常说:
[Edit Erwin]:原来异常不是来自数据库。
org.postgresql.util.PSQLException: Bad value for type timestamp : 2011-10-10T21:55:19.790+03:00
我不想通过实现完整的 INSERT 语句来手动进行格式化,因为涉及到很多字段。
这里最好的解决方案是什么?有没有办法在所有调用上配置 DateTime
的 toString()
。我还考虑过从 DateTime 创建一个继承的类,但是......嗯......这是最终的。
--
Per Erwin,我通过插入虚拟表来测试 DateTime 值“2011-10-10T21:55:19.790+03:00”,它正在运行。但是无法使用 JDBC。与 JDBC 驱动程序相关的内容?
最佳答案
这里的问题是 JdbcTemplate
使用准备好的语句然后绑定(bind)值。有问题的字段是时间戳类型 - 因此需要将其设置为 java.sql.Date
。在这种情况下,spring 正在调用通用的 setObject
方法,将其传递给 Joda Time DateTime
实例。驱动程序不知道如何将其转换为 java.sql.Date
- 因此会出现错误。
要解决此问题,您可以扩展 BeanPropertySqlParameterSource
覆盖 getValue
方法。如果对象的类型是 joda.time.DateTime
,将其转换为 java.util.Date
对象并返回。这应该可以解决问题。
class CustomBeanPropertySqlParameterSource extends BeanPropertySqlParameterSource {
@Override
Object getValue(String paramName) {
Object result = super.getValue(paramName);
if (result instanceof DateTime) {
return ((DateTime) result).toDate();
} else {
return result;
}
}
}
关于spring - JodaTime 和 BeanPropertySqlParameterSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717945/
如果 bean 具有列表字段,我如何使用 NamedParameterJdbcTemplate 使用 BeanPropertySqlParameterSource 将值列表插入数据库?如果不可能那么我
在 Sybase 中设置一个表和存储过程,如下所示: 创建表testtab(f float) 创建 proc insert_testtab @f float 作为插入 testtab 值(@f) 还有
情况是这样的: PostgreSQL 数据库表有一个字段 dateAdded 是 timestamp Pojo 模型对象将此字段映射为 class MyModel{ org.joda.time.
我有以下内容 @Data //Lombok annotation to generate getters and setters @Entity public class TradeLog {
我有一个简单的模型,我想使用 Spring JDBCTemplate 将其实例保存在 MySQL 中。我使用 DAO 使用简单的 sql 保存模型对象(insert into user(id, ema
我在 SpringBoot 应用程序中使用 Spring JDBC。这是我的数据类之一: @Getter @Setter @NoArgsConstructor @Wither @Builder @Al
Java, Spring JDBC v3.0.5 我定义了一个 DTO,其中有一个自定义枚举类型的属性。当通过 BeanPropertySqlParameterSource 对象将它作为参数发送到存储
我是一名优秀的程序员,十分优秀!