Получить поле oneToMany из класса с помощью Hibernate - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу получить из базы данных список свойств для сущности, но получаю следующее исключение:

org.hibernate.PropertyNotFoundException: no appropriate constructor in class MapClass

Моя сущность:

 public class Entity{

     //properties

    @OneToMany(mappedBy = "user", cascade={CascadeType.ALL})
   private List<Profile> profiles = new LinkedList<Profile>();

   public Entity(){}

 }

Класс сопоставления:

 public class MapClass{

     //properties


   private String name;
   private List<Profile> profiles ;
   public MapClass(String name,List<Profile> profiles){
     this.name = name;
     this.profiles = profiles;
   }

 }

Мой SQL-запрос:

String sql =  "SELECT new MapClass(u.name,u.profiles) FROM Entity u";
return getList(MapClass.class,sql);

Мой запрос работает, если я удаляю профили из конструктора MapClass и из запроса.У меня есть пустые конструкторы во всех моих классах.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Пустой конструктор является обязательным требованием для Hibernate.Он использует отражение этого конструктора для создания экземпляров требуемых объектов.

   //empty constructor
    public Entity(){

    }

  //empty constructor
    public Profile(){

    }

Создайте пустые конструкторы в ваших бинах сущностей, т.е.классы, помеченные как @Entity.

0 голосов
/ 11 декабря 2018

Hibernate нужен конструктор для работы: добавьте его в свой класс

public class Entity{

    //add the constructor
    public Entity(){ }

}
...