Hibernate:在主键列处截断的数据

时间:2016-10-26 09:23:27

标签: sql hibernate

我知道在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>

我无法解决此错误。 请帮我。 谢谢大家!

1 个答案:

答案 0 :(得分:0)

我认为您尝试将cardId更新为不是数字值,或者它对于您的列类型来说太大了,例如An Int can only accept values between -2147483648 to 2147483647. 我建议你在make update query之前为参数newId添加一些验证。