1

I'm currently testing my JPA @Query and keep getting this error

enter image description here

<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>

Member Entity

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;
}


Status Entity

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;
}


MemberRepository

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);
}

what I want to test is that @Query part.

so I made a test file as below

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("===================================");
    }

}

I want to test this getMemberWithStatus method but getting those error above..

I think the problem is
Object[] arr=(Object[])result; this part what did I do wrong??

oh and for your information I did put some test data into DB

1 Answer 1

1

solve the problem by changing my code as below.

@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));
        }

    }

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.