JAVA,检索值时的SQL异常

时间:2011-08-01 06:48:08

标签: java mysql sql exception bigint

我使用的是Netbeans 6.9.1和glassfish 3.1,数据库是MySql。

数据库中有一个名为HotelNames的表,我需要编写一个SQL并传递酒店名称以获取其酒店ID。我得到一个我无法解决的例外情况。

    @Override
public int GetHotelID(String hotellName) {
   Query query  = em.createNativeQuery("select ID from HotelNames where hotName ='"+ hotellName+"'");
    String hotelID =  (String) query.getSingleResult();

    return Integer.parseInt(hotelID );
}

异常我得到了我在上面的代码中写的SQL

Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.String

MySQL create table看起来像;

CREATE TABLE HotelNames (`ID` BIGINT NOT NULL AUTO_INCREMENT, `hotName` VARCHAR(255), PRIMARY KEY (`ID`));

我认为这是因为SQL中的BIGINT和导致此问题的代码中的int,但我无法解决此问题。

4 个答案:

答案 0 :(得分:4)

您可能想要做这样的事情

Number hotelID =  (Number) query.getSingleResult();
return hotelID.intValue();

答案 1 :(得分:0)

java.math.BigInteger无法强制转换为java.lang.String - 您正在尝试将ID转换为字符串,即BigInteger。 请参见String hotelID =(String)query.getSingleResult();

答案 2 :(得分:0)

您的查询返回BigInteger。所以你可以得到这样的int:

        return ((BigInteger)  query.getSingleResult()).intValue();

答案 3 :(得分:0)

BigInteger bg = new BigInteger();
bg = query.getSingleResult();
String hotelId = bg.toString();

我希望这可以解释更多.....如果你愿意,你也可以在一行中完成......