HQL-запрос, как вернуть сущность? - PullRequest
0 голосов
/ 18 января 2019

Привет. Я изо всех сил пытаюсь успешно выполнить этот запрос. У меня есть эти 2 сущности, и у обоих есть правильные методы получения и установки.

@Entity
@Table(name="customer")
public class Customer {

    @Id
    @Column(name="Customer_Code")
    private String customer_Code;

    @Column(name="Customer_Name")
    private String customer_Name;
}


 @Entity
@Table(name="project")
public class Project {

    @Id
    @Column(name="Project_Code")
    public String project_Code;

    @Column(name="Project_Customer")
    public String project_Customer;

    @Column(name="Project_Description")
    public String project_Description;

    @Column(name="Project_Pastel_Prefix")
    public String project_Pastel_Prefix;

    @Column(name="Project_Name")
    public String project_Name;
}

И десять это мой метод контроллера:

// need to inject the session factory
    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public List<Customer> getCustomers() {

        // get the current hibernate sessio
    Session currentSession = sessionFactory.getCurrentSession();

    // create a query  ... sort by last name
    Query<Customer> theQuery = 
            currentSession.createQuery("Query goes here",
                                        Customer.class);

    // execute query and get result list
    List<Customer> customers = theQuery.getResultList();

        // return the results       
        return customers;
    }

Я пытаюсь выполнить этот запрос " SELECT DISTINCT Customer. * FROM Customer, Project WHERE Customer_Code = Project_Customer ORDER BY Customer_Name "

Я пробовал следующее:

  • "выбрать отдельного Клиента из Клиента как клиент, Проект как профессионал, где cus.customer_code = pro.project_Customer заказ по cus.customer_Name "
  • "выберите отдельный код клиента cus.customer_Came, имя клиента cus.customer_Name as cus, Project as pro, где cus.customer_code = pro.project_Customer заказ по cus.customer_Name "
  • "из Customer Cus, Project Pro, где cus.customer_Code = pro.project_Customer order by cus.customer_Name "

Но ничего не работает. Обычно я получаю сообщение об ошибке Невозможно создать TypedQuery для запроса с более чем одним возвратом, используя запрошенный тип результата [com.timesheet_Webservice.entity.Customer]

Что, по-видимому, означает, что я не получаю экземпляр сущности клиента, как я бы с простым запросом "от клиента". Если это так, как я могу вернуть объект клиента? Если нет то что я делаю не так?

1 Ответ

0 голосов
/ 18 января 2019

Когда вы делаете Customer.*, запрос должен выбрать customer_Code и customer_Name, которые являются двумя String объектами. Но Вы ожидаете в результате Customer сущность.

Сделайте запрос, чтобы выбрать Customer объект, подобный этому.

select distinct cus from Customer as cus, Project as pro where cus.customer_code = pro.project_Customer order by cus.customer_Name

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