我面临SpringJDBC的枚举问题。我有一个包含枚举值的POJO。我想在数据库中存储字符串值,而不是序号。我制作了一个DAO,除了使用命名参数jdbcTemplate的批处理方法(对于jdbcTemplate和BatchPreparedStatementSetter,它可以工作,但我更喜欢使用命名参数)之外,它工作得很好。
例如:
public int[] batchUpdate(List<MyPojo> pojos) throws DaoException {
SqlParameterSource[] parameters = new SqlParameterSource[pojos.size()];
for (int i = 0; i < pojos.size(); i++) {
parameters[i] = new BeanPropertySqlParameterSource(pojos.get(i));
}
try {
return namedParameterJdbcTemplate.batchUpdate(SQL_UPDATE, (SqlParameterSource[]) parameters);
} catch (Exception ex) {
throw new DaoException(ex);
}
}
不适用于枚举属性。
我有一个错误:
原因:org。h2。jdbc。JdbcSQLException:列“状态字符变化(20)非空”的值太长“'ACED0057E7200466F72672E67656E792E7064702E66976562697264732E67656E79746F74652E646F6D61696E6D6F64656C2E6265742E4265744465636F6…(258)”;SQL语句:更新。。。设置状态=?其中id=?[22001-187]在组织。h2。消息DbException。位于org的getJdbcSQLException(DbException.java:345)。h2。消息DbException。在org上获取(DbException.java:179)。h2。桌子柱validateConvertUpdateSequence(Column.java:327)位于org。h2。桌子桌子validateConvertUpdateSequence(Table.java:737)位于org。h2。命令dml。使现代化在org上更新(update.java:125)。h2。命令命令容器。在org上更新(CommandContainer.java:78)。h2。命令命令org上的executeUpdate(Command.java:254)。h2。jdbc。JdbcPreparedStatement。org上的executeUpdateInternal(JdbcPreparedStatement.java:157)。h2。jdbc。JdbcPreparedStatement。org上的executeBatch(jdbpreparedstatement.java:1183)。springframework。jdbc。果心jdbc模板$4。doInPreparedStatement(JdbcTemplate.java:1005)位于org。springframework。jdbc。果心jdbc模板$4。doInPreparedStatement(JdbcTemplate.java:989)位于org。springframework。jdbc。果心jdbc模板。执行(JdbcTemplate.java:644)。。。43多
MyPojo有一个枚举值(状态)。这很奇怪,因为我要存储的枚举字符串是“已验证”而不是“aced000…”。如果我使用JPA,我会使用@Enumerated(EnumType.STRING)
作为我的状态字段,但是SpringJDBC上是否存在类似的东西?
当做
最终通过注册sql类型解决:
for (int i = 0; i < bets.size(); i++) {
BeanPropertySqlParameterSource bpsps = new BeanPropertySqlParameterSource(pojos.get(i));
bpsps.registerSqlType("status", Types.VARCHAR);
parameters[i] = bpsps;
}
在前面的章节,我们使用mysql交互模式输入语句和查看结果。我们也可以以批处理的模式来运行mysql。要达到这种目的,需要把我们想运行的语句放在一个文件里,然后告诉mysql从文件读取它的输入。 shell> mysql < batch-file 如果你是在Windows下运行mysql,文件里的一些特定字符会引起一些问题,你要这样做: C:\> mysql -e "source batch-f
由于我对这个平台还不熟悉,所以我正在尝试找出Spring的工作方式。我有一个存储库声明如下: 我有几个查询方法在那里,但现在我想有另一个方法,不只是一个查询。该方法运行一个查询,如果找到一条记录,它就返回它,如果没有,它就用一些默认参数创建它。这种方法该何去何从? 我在文档中看到了自定义存储库实现,但因为它们与实际的是分开的,所以它们似乎不能访问数据库。
我正在编写一个Spring批处理应用程序: null
我已经开始探索Spring Batch,并遇到了一些基本问题。
我正在尝试通过批处理文件创建vbs。但是有一行我包含一个对象。批处理文件无法将闭括号 )写入vbs,这在运行vbs时会导致错误。 批处理文件代码为: 输出: vbs zipIt.vbs vbs输出:Microsoft (R) Windows Script Host版本5.8版权所有(C) Microsoft Corporation。保留所有权利。 C: \Users\arvind\Desktop\