【问题标题】:Hibernate Exception applying ON/WITH condition to LEFT JOIN将 ON/WITH 条件应用于 LEFT JOIN 的休眠异常
【发布时间】:2011-04-30 01:43:26
【问题描述】:

我想尝试根据 fieldName 找出所有 fieldValue

MNC.java:

private Map <String, String>formFields = new HashMap<String, String>();

public void setFieldValue(String fieldName, String fieldValue) {
        if (formFields == null) {
            formFields = new HashMap<String, String>();
        }
        formFields.put(fieldName, fieldValue);  

public Map<String, String> getFormFields() {
        return formFields;
    }
    public void setFormFields(Map<String, String> formFields) {
        this.formFields = formFields;

public String getFormField(String fieldName) {
        if ((formFields != null) && (formFields.get(fieldName) != null)) {
            return (String) formFields.get(fieldName);
        } 
        return null;
    }

MNC.hbm.xml:

<map name="formFields" table="mncformfields" cascade="all-delete-orphan" lazy="true">
                    <key column="id"/>
                    <index column="fieldName" type="string"/>
                    <element column="fieldValue" type="string"/>
                </map>

这里是我的查询:

query.append("SELECT users.name,sum(mncfield.fieldValue) as TotalMoney");
            query.append("from MNC as mnc ");
            query.append("left join mnc.formFields as mncfield ");

            query.append("with (mnc.mncID= mncfield.id) and (mnc field.fieldName = 'mapMoney') ");
             query.append("left join mnc.serviceExec as users ");
            query.append("where (mnc.mncID= mncfield.id) ");
            query.append("and mnc.serviceExec.id=users.id ");
            query.append("and (mnc.mncDate between :startDate and :endDate) ");
            query.append("and (mnc.mncGroup.id in (:ugIDs)) ");
            query.append("group by users.name");

我得到异常:

org.hibernate.hql.ast.QuerySyntaxException:意外令牌:with`

如果我评论这一行:

//query.append("with (mnc.mnc ID= mncfield.id) and (mnc field.fieldName = 'mapMoney') ");

然后我得到了异常:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: with-clause 引用了两个不同的 from-clause 元素

如果我使用on 而不是with 我得到:

org.hibernate.hql.ast.QuerySyntaxException:意外令牌:开启

【问题讨论】:

    标签: java hibernate orm hql


    【解决方案1】:

    您是否注意到第一行末尾没有空格(应该在 TotalMoney 之后或以下 from 之前)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 2015-02-03
      • 2017-03-20
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多