java.lang.reflectClassCastException: [Ljava.lang.reflectObject; cannot be cast to的问题,在线等

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。RE: java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object
cxf-users mailing list archives
Message view
eanbiso &bisoma...@hotmail.it&
RE: java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object
Hi Sergey,
I've seen that without @QueryParam annotation the parameter is properly managed and serialized,
no exception occurs and it arrives properly built to the server.
Instead if I define it as @PathParam (leaving all other parameters as @QueryParam) no exception
occurs but it arrives as an empty byte[] to the server.
So the first solution (remove @QueryParam tag for the byte[]) seems to work...but there is
no problem if I leave a parameter without annotations (@QueryParam or @PathParam)?
In the morning I'll try also the solution of the Byte[].
Bets regards,
Date: Mon, 1 Jul :40 -0700
From: ml-node+s0146h46@
To: bisomagic@hotmail.it
Subject: Re: java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object
I'm not sure attempting to map a byte[] array to a query parameter will
work, but I guess no ClassCastException should be reported but something
more meaningful, I'll try to have to look into it.
In meantime, try Byte[]. may be that will help
On 01/07/13 16:22, eanbiso wrote:
& I've a class cast exception invoking a REST web method that wants a byte[]
& as input parameter.
& I had a SOAP endPoint and I've added all the annotations required to publish
& it also with REST technology...
& The web method is this:
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/AddCluster")
@ApiOperation(value = "Create a new cluster", notes = "Returns the newly
& created cluster", response = IProxyCluster.class, produces
& ="application/xml,application/json")
public IProxyCluster AddCluster(
@ApiParam(value = "username", required = true) @WebParam(name =
& "username") @QueryParam("username") @CxfWSAuthGrain(type=authType.username)
& String username ,
@ApiParam(value = "appGardenID", required = true) @WebParam(name =
& "appGardenID") @QueryParam("appGardenID") int appGardenID ,
@ApiParam(value = "clusterLevel", required = true) @WebParam(name =
& "clusterLevel") @QueryParam("clusterLevel") short clusterLevel ,
@ApiParam(value = "clusterType", required = true) @WebParam(name =
& "clusterType") @QueryParam("clusterType") short clusterType ,
@ApiParam(value = "hopsize", required = true) @WebParam(name = "hopsize")
& @QueryParam("hopsize") int hopsize ,
@ApiParam(value = "clusterAddress", required = true) @WebParam(name =
& "clusterAddress") @QueryParam("clusterAddress") byte[] clusterAddress ,
@ApiParam(value = "name", required = true) @WebParam(name = "name")
& @QueryParam("name") String name ,
@ApiParam(value = "description", required = true) @WebParam(name =
& "description") @QueryParam("description") String description ) throws
& DBValidationE
& When I call the REST web method on client side this exception occurs:
[01 lug :14,728] - (TestWS-383) ERROR Exception:
& java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.O
java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.O
& org.apache.cxf.jaxrs.client.AbstractClient.addMatrixQueryParamsToBuilder(AbstractClient.java:632)
& org.apache.cxf.jaxrs.client.ClientProxyImpl.handleQueries(ClientProxyImpl.java:432)
& org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:162)
at $Proxy33.AddCluster(Unknown Source)
& ...debugging I've found that the parameter that is the cause of the trouble
& is the "byte[] clusterAddress"
& How can I fix the problem?
& I forgot a few annotations?
& I'm using cxf_2.7.3
& Thanks a lot,
& View this message in context: http://cxf.547215./java-lang-ClassCastException-B-cannot-be-cast-to-Ljava-lang-Object-tp5730141.html
& Sent from the cxf-user mailing list archive .
Sergey Beryozkin
Talend Community Coders
If you reply to this email, your message will be added to the discussion below:
http://cxf.547215./java-lang-ClassCastException-B-cannot-be-cast-to-Ljava-lang-Object-tp0146.html
To unsubscribe from java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object,
click here.
View this message in context: http://cxf.547215./java-lang-ClassCastException-B-cannot-be-cast-to-Ljava-lang-Object-tp0154.html
Sent from the cxf-user mailing list archive .
(inline, 7-Bit, 4669 bytes)ord1nary 的BLOG
用户名:ord1nary
文章数:20
访问量:16426
注册日期:
阅读量:5863
阅读量:12276
阅读量:424844
阅读量:1113242
51CTO推荐博文
出现这个的错误原因是在manifest.xml文件中没有加标记的那行&application& & & & android:name="com.example.MyApplication"& & & & android:allowBackup="true"& & & & android:icon="@drawable/ic_launcher"& & & & android:label="@string/app_name"& & & & android:theme="@style/AppTheme" && & & & &activity& & & & & & ...& & & & &/activity&& & &/application&
了这篇文章
类别:┆阅读(0)┆评论(0)9404人阅读
spring(3)
hql查询单表部分字段:
在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况:
1.查询全部字段的情况下,如&from 实体类&,list中封装的对象为实体类本身,各属性都将得到填充。
2.只查询一个字段,默认情况下,list中封装的是Object对象。
3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。
对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。比较简单的解决方法是:
在hql中使用 select new 包名.类名(属性1,属性2……) from实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……)保持一致,这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。
hql查询多表部分字段:
select new 包名.表1实体类名(表1.属性1,表2.属性2……) from 表1实体类,表2实体类 where表1.ID=表2.ID(即相关联的字段),同时在要返回的表1实体类中添加表2的属性和带参的构造方法,参数的个数和顺序与(表1.属性1,表2.属性2……) 保持一致
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:273118次
积分:3210
积分:3210
排名:第9826名
原创:59篇
转载:41篇
评论:23条
(1)(5)(5)(10)(16)(28)(8)(24)(3)cannot be cast to [Ljava.lang.Object - ITeye问答
问题是这样的 我用的是hibernate 框架做数据访问
因为用到spring security,我的用户实体类SysUser 实现了spring security的接口UserDetails
SysUser.java代码如下
@Table(name="sys_user")
@org.hibernate.annotations.Proxy(lazy = false)
public class SysUser
implements java.io.Serializable ,UserDetails{
private Integer userId;
private String uloginN
//其他property及相关setter getter略
//实现UserDetails接口方法
@Transient
public Collection&? extends GrantedAuthority& getAuthorities() {
// TODO Auto-generated method stub
@Transient
public String getPassword() {
// TODO Auto-generated method stub
return this.
@Transient
public String getUsername() {
// TODO Auto-generated method stub
return this.uloginN
@Transient
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
@Transient
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
@Transient
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
@Transient
public boolean isEnabled() {
// TODO Auto-generated method stub
return this.ustatus==0?true:
我的dao类 数据访问方法如下
SysUserDaoHbnImpl.java
@Repository("sysUserDao")
public class SysUserDaoHbnImpl implements SysUserDao{
private static final Log log = LogFactory.getLog(SysUserDao.class);
private SessionFactory sessionF
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionF
@SuppressWarnings("unchecked")
@Cacheable(cacheName = "baseCache")
public List&SysUser& selectRecordForPage(QueryPara&SysUser& qp) {
// TODO Auto-generated method stub
//处理分页开始
List&SysUser& result=
Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(qp.getClazz());
List&Criterion& list=qp.getCriterions();
if (list != null)
if(list.size()&0)
//Set&String& keys = map.keySet();
for (Criterion cri : list)
criteria.add(cri);
// 获取根据条件分页查询的总行数
//System.out.println("获取根据条件分页查询的总行数");
int rowCount = ((Number) criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
qp.setRecordcount(rowCount);
qp.setPagecount((qp.getRecordcount()+qp.getPagesize() - 1)/qp.getPagesize());
if(qp.getPageNo()&qp.getPagecount())
qp.setPageNo(qp.getPagecount());
if(qp.getPageNo()&1)
qp.setPageNo(1);
List&Order& list2=qp.getOrders();
if (list2 != null)
if(list2.size()&0)
//Set&String& keys = map2.keySet();
for (Order ord : list2)
criteria.addOrder(ord);//(Restrictions.like(key, map2.get(key)));
criteria.setFirstResult((qp.getPageNo() - 1) * qp.getPagesize());
criteria.setMaxResults(qp.getPagesize());
result = (List&SysUser&)criteria.list();
catch (RuntimeException re)
log.error(re.getMessage());
//处理分页结束
服务层代码略,负责调用SysUserDaoHbnImpl.java的selectRecordForPage方法
我的控制器 负责调用服务层用户数据分页方法,然后服务层继续调用数据访问层SysUserDaoHbnImpl.java的selectRecordForPage方法
我的控制器UserController.java调用方法如下
@RequestMapping(value={"/List"},method=RequestMethod.GET)
public String list(
@RequestParam(value="page", defaultValue="1") int page,
@RequestParam(value="perPage", defaultValue="30") int perPage,
ModelMap modelMap)
QueryPara&SysUser& qp=new QueryPara&SysUser&();
qp.setClazz(SysUser.class);
qp.setPagesize(perPage);
qp.setPageNo(page);
modelMap.put("userlist", this.sysUserService.selectRecordForPage(qp));
modelMap.put("QueryPara", qp);
return "UserManager/List";
我的视图userlist.jsp里面的java代码如下
List&SysUser& list=(List&SysUser&)request.getAttribute("userlist");
if(list.size()&0)
Iterator&SysUser& it=list.iterator();
SysUser sysUser=
while(it.hasNext())
sysUser=(SysUser)it.next(); //此处抛出异常:java.lang.ClassCastException: [Ljava.lang.O cannot be cast to [SysUser]
我运行系统,打开显示用户数据页面,SysUserDaoHbnImpl.java数据分页方法selectRecordForPage我设置断点都没有抛出异常,就在视图页面sysUser=(SysUser)it.next(); 这个地方抛出异常java.lang.ClassCastException: [Ljava.lang.O cannot be cast to [SysUser]
请问高手 这是什么原因,应该如何修改呢,不胜感谢
附上我的测试情况:
(一)第一种情况,在原来系统里面SysUser.java没有实现UserDetails(spring security里面的一个接口)接口时,
用户数据显示视图userlist.jsp是显示正常的,可以看到用户数据
(问题是 现在SysUser.java实现接口UserDetails,怎么在视图层sysUser=(SysUser)it.next()就出问题? )
(二) 第二种情况,当我把SysUserDaoHbnImpl.java数据分页方法selectRecordForPage里面的下面代码部分做如下修改的时候 运行正常
//注释下面代码
//int rowCount = ((Number) criteria.setProjection(
//Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
//手动设置int rowCount值
int rowCount=1;//我用户表目前实际只有一个用户
注释掉上面的Projections相关代码后,userlist.jsp页面也是运行正常的
问题补充:qp是 QueryPara 数据分页类,封装数据分页参数
其中 qp.getClazz() 是在控制器UserController.java里面设置的
下面是UserController.java里面的设置代码: qp.setClazz(SysUser.class);&
@RequestMapping(value={"/List"},method=RequestMethod.GET)&
&&& public String list(&&&&&&&&&&
&&&&&&&&&&& @RequestParam(value="page", defaultValue="1") int page,&
&&&&&&&&&&& @RequestParam(value="perPage", defaultValue="30") int perPage,&&&&&&&&&&&
&&&&&&&&&&& ModelMap modelMap)&&
&&&&&&& QueryPara&SysUser& qp=new QueryPara&SysUser&();&
&&&&&&& qp.setClazz(SysUser.class);&&&&&& //在这里设置
&&&&&&& qp.setPagesize(perPage);&
&&&&&&& qp.setPageNo(page);&
&&&&&&& modelMap.put("userlist", this.sysUserService.selectRecordForPage(qp));&
&&&&&&& modelMap.put("QueryPara", qp);&&&&&&&
&&&&&&& return "UserManager/List";&
这个参数传递到数据访问SysUserDaoHbnImpl.java的public List&SysUser& selectRecordForPage(QueryPara&SysUser& qp)方法
Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(qp.getClazz());&
问题补充:对了& 我 的SysUser对象 里面关联了一个SysRole对象,我在问题上补充描述一下
SysUser.java里面关联了List&SysRole&的,用户角色SysRole集合
private List&SysRole&
@ManyToMany(cascade = {CascadeType.ALL},fetch = FetchType.EAGER)
@JoinTable(name="sys_UserRoles",
joinColumns={@JoinColumn(name="R_UserID")},
inverseJoinColumns={@JoinColumn(name="R_RoleID")})
public List&SysRole& getRoles() {
public void setRoles(List&SysRole& roles) {
this.roles =
}
下面部分是实现UserDetails接口方法,里面用到这个roles
@Override&
&&&&&&& @Transient
public Collection&? extends GrantedAuthority& getAuthorities() {
// TODO Auto-generated method stub
List&GrantedAuthority& grantedAuthorities=new ArrayList&GrantedAuthority&();
for(SysRole role: roles)
grantedAuthorities.add(new SimpleGrantedAuthority(role.getRroleName()));
//grantedAuthorities.toArray(new GrantedAuthority[roles.size()]);&&
return grantedA
问题补充:SysUserDaoHbnImpl.java里面的sessionFactory
private SessionFactory sessionF&
&&& @Autowired&
&&& public void setSessionFactory(SessionFactory sessionFactory) {&
&&&&&&& this.sessionFactory = sessionF&
是在applicationContext.xml里面配置的
附上我的猜想,是不是spring包裹后的session代理跟原生态的session产生差异?
问题补充:程序运行public List&SysUser& selectRecordForPage(QueryPara&SysUser& qp)方法时
条件参数list 和排序参数list2实际都为null(UserController控制器里面没有设置)
List&Criterion& list=qp.getCriterions();
List&Order& list2=qp.getOrders();&
对比 我的SysUserDaoHbnImpl.java另外一个没有分页的方法
当控制器里面调用这个selectAllRecord()方法时,视图userlist.jsp是正常的
@Override
@SuppressWarnings("unchecked")
public List&SysUser& selectAllRecord() {
// TODO Auto-generated method stub
return (List&SysUser&)this.sessionFactory.getCurrentSession().createCriteria(SysUser.class).list();
}
采纳的答案
你把criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);这句代码加到criteria.setProjection(null);后面看看行不行
解释:当hibernate采用关联的时候不使用criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);返回的是个对象数组,加上这句代码后返回的是当前列表的对象
1、debug下 qp.getClazz()& 和 Criteria生成的hql
已解决问题
未解决问题}

我要回帖

更多关于 java.lang.integer 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信