Ошибка SQLGrammar при запросе представления MySql - PullRequest
0 голосов
/ 18 сентября 2018

При выполнении запроса GET я получаю исключение ohengine.jdbc.spi.SqlExceptionHelper: Неизвестный столбец 'disburseme0_.reason_type' в 'списке полей' в трассировке стека, даже если я правильно настроил полев классе сущности.У меня есть SOAP-интерфейс Spring Boot, который запрашивает представление базы данных MySql.Я назначил один из уникальных ключей из родительских таблиц в качестве идентификатора представления в JPA.

Часть моего класса сущности имеет:

@Entity
@Table(name="disbursement_payload")

public class Disbursement {
@Id 
@Column(name="ID")
private long disbursementId;

@Column(name="ReasonType")  
private String reasonType;
public long getDisbursementId() {
    return disbursementId;
}
public void setDisbursementId(long disbursementId) {
    this.disbursementId = disbursementId;
public String getReasonType() {
    return reasonType;
}
public void setReasonType(String reasonType) {
    this.reasonType = reasonType;
}

У меня есть представление как:

CREATE VIEW disbursement_payload AS (
  SELECT 
   iso_number AS Currency,
trans_desc AS ReasonType,
account_number AS ReceiverParty,
amount AS Amount
  FROM m_payment_detail, m_loan_transaction 
  WHERE m_payment_detail.`id`= m_loan_transaction.`payment_detail_id` AND 
m_payment_detail.`payment_type_id`=2
); 

Чего-то не хватает в определении сущности или представления?Я прочитал один из комментариев здесь не удалось извлечь ResultSet в hibernate , что мне, возможно, придется явно определить родительские схемы.Любая помощь, с благодарностью.

1 Ответ

0 голосов
/ 18 сентября 2018

сделать сопоставление для столбца базы данных и имени класса var на основе преобразования camelCase, основанного на подчеркивании _ разделенное имя

вы можете попробовать использовать

    CREATE VIEW disbursement_payload AS (
      SELECT iso_number AS currency
      , trans_desc AS reason_type
      , account_number AS receiver_rarty
      , amount AS amount
      FROM m_payment_detail
      INNER JOIN m_loan_transaction 
          ON  m_payment_detail.`id`= m_loan_transaction.`payment_detail_id` 
            AND m_payment_detail.`payment_type_id`=2
    ); 

код представления - это код SQL, а hibernate - представление в виде таблицы, поэтому преобразование имени столбца основано на тех же правилах

и предложение не использовать (более раннее) неявное объединение в зависимости от того, где вы должны использовать условие (более позднее) explici join sintax ..

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