【问题标题】:java.util.ArrayList cannot be cast to class [Ljava.lang.Object; <springboot test>java.util.ArrayList 不能转换为类 [Ljava.lang.Object; <春季开机测试>
【发布时间】:2021-05-21 07:57:50
【问题描述】:

我目前正在测试我的 JPA @Query 并不断收到此错误

<br>
class java.util.ArrayList cannot be cast to class [Ljava.lang.Object; (java.util.ArrayList and [Ljava.lang.Object; are in module java.base of loader 'bootstrap')

<br>

会员实体

package org.morgorithm.frames.entity;

import com.sun.istack.Nullable;
import lombok.*;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mno;


    private String name;

    private String phone;
}


状态实体

package org.morgorithm.frames.entity;

import com.sun.istack.Nullable;
import lombok.*;

import javax.persistence.*;

@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString(exclude={"member","facility"})
public class Status extends BaseEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long statusnum;

    @ManyToOne(fetch=FetchType.LAZY)
    private Member member;

    @ManyToOne(fetch=FetchType.LAZY)
    private Facility facility;

    private double temperature;

    private Boolean state;
}


会员资料库

package org.morgorithm.frames.repository;

import org.morgorithm.frames.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface MemberRepository extends JpaRepository<Member,Long> {
    @Query("select m, s from Member m left join Status s ON s.member=m WHERE m.mno=:mno")
    List<Object[]> getMemberWithStatus(@Param("mno") Long mno);
}

我要测试的是@Query 部分。

所以我做了一个如下的测试文件

MemberRepositoryTests

package org.morgorithm.frames.repository;

import org.junit.jupiter.api.Test;
import org.morgorithm.frames.entity.Member;
import org.morgorithm.frames.entity.MemberImage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Commit;
import org.springframework.transaction.annotation.Transactional;

import java.util.Arrays;
import java.util.UUID;
import java.lang.Object;
import java.util.stream.IntStream;

@SpringBootTest
public class MemberRepositoryTests {
    @Autowired
    private MemberRepository memberRepository;
    @Autowired
    private MemberImageRepository memberImageRepository;

    @Test
    public void testGetMemberByMno(){
        Object result=memberRepository.getMemberWithStatus(100L);

        Object[] arr=(Object[])result;

        System.out.println("----------------------------*************************");

        System.out.println(Arrays.toString(arr));

        System.out.println("===================================");
    }

}

我想测试这个getMemberWithStatus 方法 但是上面出现了这些错误..

我认为问题出在
Object[] arr=(Object[])result;这部分 我做错了什么??

哦,为了您的信息,我确实将一些测试数据放入数据库

【问题讨论】:

    标签: jpa jpql


    【解决方案1】:

    通过如下更改我的代码来解决问题。

    @Test
        public void testGetMemberByMno(){
            List<Object[]> result=memberRepository.getMemberWithStatus(100L);
            List<Object> arr=Arrays.asList(result);
            for(Object[] a:result){
               System.out.println(Arrays.toString(a));
            }
    
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 2019-04-26
      • 2012-05-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多