查询 MySql 视图时出现 SQLGrammar 错误
Posted
技术标签:
【中文标题】查询 MySql 视图时出现 SQLGrammar 错误【英文标题】:SQLGrammar error when querying MySql view 【发布时间】:2018-09-18 09:38:06 【问题描述】:当运行 GET 请求时,即使我已配置在实体类中正确字段。我有一个查询 mysql 数据库视图的 Spring Boot SOAP 接口。我已将父表中的一个唯一键指定为 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
);
在实体或视图定义中是否缺少某些内容?我已经阅读了could not extract ResultSet in hibernate 此处的其中一个 cmets,我可能必须明确定义父模式。任何帮助,不胜感激。
【问题讨论】:
当你从两个表中选择时,使用JOIN
是更好的选择
您的视图中似乎没有 reason_type
列。
我不会打扰视图。我看不出它的意义。
【参考方案1】:
基于下划线_
分隔名称的驼峰式转换对db列和类var名称进行映射
你可以试试
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 .. 的条件。
【讨论】:
以上是关于查询 MySql 视图时出现 SQLGrammar 错误的主要内容,如果未能解决你的问题,请参考以下文章