查询mysql视图时发生sqlgrammar错误

rjzwgtxy  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(783)

运行get请求时,我会得到一个异常o.h.engine.jdbc.spi.sqlexceptionhelper:堆栈跟踪中“field list”中的未知列“DisbourseMe0\u0.reason\u type”,即使我在entity类中正确配置了字段。我有一个springbootsoap接口,它正在查询mysql数据库视图。我已经从父表中指定了一个惟一键作为jpa中的视图id。
实体类的一部分具有:

@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
);

实体或视图定义中是否缺少某些内容?我在这里读到了一条评论:无法在hibernate中提取resultset,我可能必须显式地定义父模式。任何帮助,非常感谢。

wmomyfyw

wmomyfyw1#

在基于下划线的camelcase转换的基础上进行db列和类var名称的Map _ 分隔名称
你可以试着用

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将视图视为表,因此列名的转换基于相同的规则
还有一个建议,基于where条件,您不应该使用(较旧的)隐式连接,您应该使用(较新的)explici join sintax。。

相关问题