Как вернуть список объекта, который не является сущностью, и добавить пользовательскую переменную, которая будет взята из файла свойств в запросе hibernate? - PullRequest
1 голос
/ 09 октября 2019

Мне нужно вернуть список CustomEmployee, где мне нужно извлечь один параметр из файла свойств.

Мне нужно запросить все остальные параметры CustomEmployee у сотрудника организации.

Мой класс сотрудника:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="EMPLOYEE")
public class Employee implements Serializable{

    private static final long serialVersionUID = 1859692418829710098L;

    @Id
    public Long id;

    public String name;
    public long salary;

Класс CustomEmployee:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CustomEmployee{

    public String name;
    public long salary;
    public String extra;
}

служба, в которой я запрашиваю:

@PersistenceContext
    private EntityManager entityManager;



    public List<CustomEmployee> retrieveCustomEmployee(){

        String dummy ="dummy"; //to be pulled from properties file

        String query = "SELECT new com.example.office.dto.CustomEmployee(" + 
        " emp.name, emp.salary, "+ dummy +" AS extra"+")"+" FROM Employee emp";

        TypedQuery<CustomEmployee> typeQuery = entityManager.createQuery(query, CustomEmployee.class);
        System.out.println("######"+ typeQuery.getResultList());

        return typeQuery.getResultList();

    }

Я получаю исключение исключения nullpointer. Однако, используя приведенный ниже запрос, я не могу найти соответствующий конструктор:

String query = "SELECT new com.example.office.dto.CustomEmployee(" + 
        " emp.name, emp.salary, 'dummy' AS extra"+")"+" FROM Employee emp";

Не могли бы вы мне помочь исправить это!

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Чтобы решить первую проблему, я думаю, что вам нужно только добавить фиктивную переменную между кавычками. Как ниже:

String query = "SELECT new com.example.office.dto.CustomEmployee(" + 
        " emp.name, emp.salary, '"+ dummy +"' AS extra"+")"+" FROM Employee emp";
0 голосов
/ 09 октября 2019

Похоже, использовать это вы бы сделали.

String queryString = "SELECT NEW com.example.office.dto.CustomEmployee(" + 
    " emp.name, emp.salary, "+ dummy +" AS extra"+")"+" FROM Employee emp";
Query query = em.createQuery(queryString);
List<CustomEmployee> employees = query.getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...