【问题标题】:hibernate mapping java Long to MySQL BIGINT error休眠映射java Long到MySQL BIGINT错误
【发布时间】:2017-07-16 06:18:21
【问题描述】:

我有一个 Mysql 表名客户在哪里

Acc_no 和 Cust_ID 列的类型分别为 BigInt(14) 和 BigInt(10)

我想通过 Spring MVC Hibernate 检查 MySQL 中的值

豆类客户

@Id
@GeneratedValue(strategy =GenerationType.AUTO)
@Column(name="Cust_ID")
long Cust_ID;

@Id
@GeneratedValue(strategy =GenerationType.AUTO)
@Column(name="Acc_No")
long Acc_No;

@Column(name="C_New_Pwd")
String C_New_Pwd;

在 CustomerDAOImpl 中我这样做了

    long custid=Long.parseLong(clog);
    long acc_no=Long.parseLong(accno);

    Session session = sessionFactory.openSession();

    String SQL_QUERY =" from com.mla.Customer as o where o.Cust_ID=? and o.Acc_No=? and o.C_New_Pwd=?";
    Query query = session.createQuery(SQL_QUERY);

    query.setParameter(0,(Long)custid);
    query.setParameter(1, (Long)acc_no);
    query.setParameter(2, pwd);
    List list = query.list();

异常: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException:“10”列中的“9.87654321E9”超出数据类型 INTEGER 的有效范围。

在 setParameter 中进行长转换我是故意这样做的,但没有帮助同样的异常。

【问题讨论】:

  • 为什么不使用 BigInteger 而不是 long?
  • @KillerDeath 好的,所以我确实使用了这个,但是如果它是一个变量,为什么我必须导入我希望用这个 BigInteger 用普通 int 检查值不会有问题
  • @KillerDeath 然后我将如何将字符串解析为 BigInteger ..... 查看我的代码
  • 哪个字符串?我的印象是您的 cust_id 和 acc_no 太大而无法放入标准整数
  • 您收到的错误消息表明您试图在 INTEGER 类型的列中存储太大的值,而不是 BIGINT(或读取 int 或 Integer 类型的 Java 属性中的 BIGINT 值。修复您的数据库列定义或映射。此外,请尊重 Java 命名约定,不要将 SQL_QUERY 命名为包含 HQL 查询的变量。

标签: java hibernate spring-mvc hql


【解决方案1】:

解决办法:

// Convert Long to String.
String custID = Cust_ID.toString();

// Then create the BigInteger
BigInteger bigIntegerCustID = new BigInteger( custID );

query.setParameter(0, bigIntegerCustID);

问候,

【讨论】:

  • 感谢仍然出现错误......“10”列中的“9.87654321E9”超出了数据类型 INTEGER 的有效范围,但第 10 列是我的 C_New_Pwd 我不明白它为什么显示第10栏请回复
  • 您是否尝试直接从 mysql 工作台执行查询?
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2017-03-23
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
相关资源
最近更新 更多