首页 新闻 会员 周边

hibernate中使用sql语句执行插入操作,报错:java.lang.Integer cannot be cast to java.lang.String

0
悬赏园豆:10 [已解决问题] 解决于 2019-01-20 00:11

数据表:

映射文件:

插入代码:

public int executeBySQL() {
return this.getSession()
.createSQLQuery("insert into CISP_PROJECT_INFO_MANAGE(uuid) values(:uuid)")
.setParameter("uuid", "7FA34CA4D2237DE9E050A8C0EA004D74",
org.hibernate.type.StandardBasicTypes.STRING).executeUpdate();
}

详细错误:
[http-8080-1] ERROR [500.jsp] - java.lang.Integer cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at com.opensymphony.xwork2.DefaultActionInvocation.saveResult(DefaultActionInvocation.java:490)

所做尝试:
将StandardBasicTypes改为LONG,报错为: java.lang.String cannot be cast to java.lang.Long。

我的疑问:
我觉得StandardBasicTypes=STRING应该是对的,查了资料:
The standard Hibernate type for mapping {@link String} to JDBC {@link java.sql.Types#VARCHAR VARCHAR}.
public static final StringType STRING = StringType.INSTANCE;
数据库中uuid是VARCHAR类型的。

目前卡到这里了,求助园友指导,谢谢谢谢

cxiaoluab的主页 cxiaoluab | 初学一级 | 园豆:26
提问于:2019-01-18 10:52
< >
分享
最佳答案
0

首先道个歉。1、没有说明项目使用的是SSH框架。2、没有将重要的错误信息反馈出来。[org.apache.struts2.dispatcher.Dispatcher] - Exception occurred during processing request: java.lang.Integer cannot be cast to java.lang.String 。

找到原因了。项目使用的是struts2框架,action中的方法返回值为Int。public int getproject() { } ,因此会报错:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String。

解决办法:把action中的方法返回值改为string。
public string getproject() { }

尝试报错是因为:setParameter第二个参数值:"7FA34CA4D2237DE9E050A8C0EA004D74"为字符串,而第三个参数为StandardBasicTypes.LONG,故会报:java.lang.String cannot be cast to java.lang.Long。

cxiaoluab | 初学一级 |园豆:26 | 2019-01-20 00:07
其他回答(1)
0

hibernate中javaBean主键类型只能是int类型,映射关系中配置是自动增长的,String类型不能自动增长,你试试看看能不能解决

收获园豆:5
圈圈666 | 园豆:207 (菜鸟二级) | 2019-01-18 15:40

数据库表中UUID是VARCHAR类型。

支持(0) 反对(0) cxiaoluab | 园豆:26 (初学一级) | 2019-01-20 00:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册