Java Mysql“;选择mod(第1列,第10列)&引用;生成bigint。如何使其成为int类型

Java Mysql“;选择mod(第1列,第10列)&引用;生成bigint。如何使其成为int类型,java,mysql,apache-spark,apache-spark-sql,Java,Mysql,Apache Spark,Apache Spark Sql,我有以下代码 String sql = "(select mod_col, 1 as count_col from ( " + "select mod(col1, 10) as mod_col " + "from table1 c " + "where c.col2 = 1) temp " +

我有以下代码

String sql = "(select mod_col, 1 as count_col from ( " +
                    "select mod(col1, 10) as mod_col " +
                    "from table1 c " +
                    "where c.col2 = 1) temp " +
                    "group by mod_col, count_col ) as temp2";

DataFrame df = getDSEDataFrame(sql);
        List<Row> col1List = df.collectAsList();

        for (Row r : col1List) {
             Integer col1Val = r.getAs("mod_col");  // exception thrown here
        }
注意,col1是在mysql中定义的,类型为
int(11)notnull

但是,当我检查df时,mod_col具有正确的bigint值。这导致以下代码的异常
java.math.BigDecimal无法转换为java.lang.Integer

String sql = "(select mod_col, 1 as count_col from ( " +
                    "select mod(col1, 10) as mod_col " +
                    "from table1 c " +
                    "where c.col2 = 1) temp " +
                    "group by mod_col, count_col ) as temp2";

DataFrame df = getDSEDataFrame(sql);
        List<Row> col1List = df.collectAsList();

        for (Row r : col1List) {
             Integer col1Val = r.getAs("mod_col");  // exception thrown here
        }
List col1List=df.collectAsList();
用于(第r行:列1){
整数col1Val=r.getAs(“mod_col”);//此处引发异常
}

在上面的sql中是否有任何方法可以强制它返回一个整数而不是一个大整数?

这只是一个猜测,但我假设
int(11)
对于
整数来说被解释为太大,因为最大int值为10位(为了安全起见,9位)。我不确定MySQL将如何处理该定义,也就是说,
int(11)
在技术上是否仍然是int,Spark可能也不知道,因此可能需要谨慎行事。可以在查询帮助中显式转换为int吗?如何获得值?如果您在
ResultSet
上调用
getObject
,您可能希望改用
getInt
。当我检查df时,mod_col的值作为bigint是正确的。这不是MySQL的问题。声明你的客户端软件/编程语言。spark可能会猜出模式,并能识别出整数为bigint。嗨,伙计们,我用引发异常的代码更新了这个问题。请查收。谢谢