Spring Data JPA: java.lang.NoSuchMethodException: java.util.List. <init>() - PullRequest
0 голосов
/ 03 октября 2018

Я использую Spring Data JPA для создания сервисов.Я пытаюсь использовать IN clause в JPQL запросе.

На самом деле я пытаюсь преобразовать этот запрос LinQ в JPQL

запрос LinQ

from rooms in EspaceDB.Rooms
                            where roomIDList.Contains(rooms.nRoomID.ToString())
                            select rooms;

java.lang.NoSuchMethodException: userAuth.User. ()

Это решение не сработало для меня.Во всех моих классах моделей у меня есть конструктор по умолчанию.

Синтаксис запроса JPQL

@Query("select room from Room as room where room.nRoomId In (:nRoomIdList)")    
    List<Room> recoverDeletedRoom(@Param(value = "nRoomIdList") List<Integer> nRoomIdList);

Консоль

java.lang.NoSuchMethodException: java.util.List.<init>()
    at java.lang.Class.getConstructor0(Unknown Source) ~[na:1.8.0_144]
    at java.lang.Class.getDeclaredConstructor(Unknown Source) ~[na:1.8.0_144]
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:209) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]

    at java.lang.Thread.run(Unknown Source) [na:1.8.0_144]

Класс номера

@Entity
@Table(name = "room")
public class Room implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "room_seq_generator")
    @SequenceGenerator(name = "room_seq_generator", sequenceName = "room_seq",allocationSize=1)
    @Column(name = "nroom_id", columnDefinition="serial")   
    public Integer nRoomId;

    @Column(name = "ncampus_id")
    public Integer nCampusId;

     //....
     //....

     public Room() {
        super();
    }

Комнатный контроллер

@PutMapping("/recoverDeletedRoom")
    public List<Room> recoverRoom(List<Integer> nRoomIdList, Boolean IsActive) {
        return roomService.recoverDeletedRoom(nRoomIdList, IsActive);
    }

1 Ответ

0 голосов
/ 03 октября 2018

Измени свой @PutMapping код

@PutMapping("/recoverDeletedRoom")
public List<Room> recoverRoom(@RequestBody WrapperObject wrapperObject) {
   return roomService.recoverDeletedRoom(wrapperObject.getNRoomIdList(), getIsActive());
}

И получи положенный маппинг тела;

public class WrapperObject {

    List<Integer> nRoomIdList;
    Boolean isActive;

    //getters setters
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...