[mysql]分离器关键字休眠公式中工作不正常

标签: MySQL Hibernate
发布时间: 2017/1/9 22:17:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下休眠办法查询,我能够在 mysql workbanch 中执行。

select group_concat(distinct t.column_1_name SEPARATOR ', ') from table_name t and t.fk_record_id = record_id

当执行此查询与休眠,休眠将父表追加到分离器关键词,如中所示以下查询。

select group_concat(distinct t.column_1_name parent_table.SEPARATOR ', ') from table_name t and t.fk_record_id = record_id

在这里休眠并不治疗分离器作为关键字。任何人有任何想法呢?

解决方法 1:

您可以添加 SEPARATOR 作为关键字。实现自己的 DialectResolver 和由此产生的方言中添加关键字︰

public class MyDialectResolver extends StandardDialectResolver {

  protected Dialect resolveDialectInternal(DatabaseMetaData metaData) throws SQLException {
    Dialect dialect = super.resolveDialectInternal(metaData);
    dialect.getKeywords().add("separator");
    return dialect;
  }

}

你就要告诉休眠使用您方言的解析器。例如在 JPA 中你可以在你的 persistence.xml:

<persistence>
  <persistence-unit>
    ...
    <property name="hibernate.dialect_resolvers" value="mypackage.MyDialectResolver"/>
  </persistence-unit>
</persistence>

顺便说一句︰ 这同样适用于聚合函数在其他方言。例如,在 Oracle WITHIN 关键字是缺掉的。

赞助商