我知道在sql中关于“数据被截断”的问题在堆栈溢出中是如此之多。但我的问题有点不同,我找不到答案。
当我在执行更新语句时,它在主键中被截断。
我的更新sql函数:
public void updateListData(String newId, String oldId) {
StringBuilder sql = new StringBuilder("UPDATE card_info c ");
sql.append("SET c.xxx_id = :newId ");
sql.append("WHERE c.xxx_id <> '' AND c.status = 1 AND c.is_private = 1 AND c.delete = 0 AND c.xxx_id = :oldId ");
Query query = getEntityManager().createNativeQuery(sql.toString());
query.setParameter("newId", newId);
query.setParameter("oldId", oldId);
query.executeUpdate();
}
我的日志:
WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1265, SQLState: 01000
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - data truncated for primary key column: <card_id>
我无法解决此错误。 请帮我。 谢谢大家!
答案 0 :(得分:0)
我认为您尝试将cardId更新为不是数字值,或者它对于您的列类型来说太大了,例如An Int can only accept values between -2147483648 to 2147483647.
我建议你在make update query之前为参数newId添加一些验证。