0

我正在使用 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 HotelNames (`ID` BIGINT NOT NULL AUTO_INCREMENT, `hotName` VARCHAR(255), PRIMARY KEY (`ID`));

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

4

4 回答 4

4

你可能想做这样的事情

Number hotelID =  (Number) query.getSingleResult();
return hotelID.intValue();
于 2011-08-01T06:58:29.823 回答
0

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

于 2011-08-01T06:54:11.353 回答
0

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

        return ((BigInteger)  query.getSingleResult()).intValue();
于 2011-08-01T06:59:56.563 回答
0
BigInteger bg = new BigInteger();
bg = query.getSingleResult();
String hotelId = bg.toString();

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

于 2011-08-01T07:07:15.857 回答