数据表:
映射文件:
插入代码:
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类型的。
目前卡到这里了,求助园友指导,谢谢谢谢
首先道个歉。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。
hibernate中javaBean主键类型只能是int类型,映射关系中配置是自动增长的,String类型不能自动增长,你试试看看能不能解决
数据库表中UUID是VARCHAR类型。