Rav*_*sod 5 java mysql sql spring hibernate
在查询中使用group concat时,由于group concat的默认长度为1024,因此无法获取所有事件组名称,因此如何在现有代码中设置group concat的max_length.
我有一个代码,我在使用group concat并设置max len
==========================================================================
DATA_QUERY="set group_concat_max_len=10024;
select group_concat(eg.name) from event_groups eg left join theatres t ON t.theatre_id = eg.theatre_id group by t.theatre_id order by t.application_name"
Session session = getFacadeLookup().getPersistenceFacade().getHibernateSession();
Query query = session.createSQLQuery(DATA_QUERY) and execute
List<Object[]> lstResult = query.list();
============================================================================
Run Code Online (Sandbox Code Playgroud)
错误集group_concat_max_len不支持此处
尝试设置第group_concat_max_len一个:
session.doWork(connection -> {
try(Statement statement = connection.createStatement()) {
statement.execute("SET GLOBAL group_concat_max_len=10024");
}
});
Run Code Online (Sandbox Code Playgroud)
或Java 8之前的语法:
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
try (Statement statement = connection.createStatement()) {
statement.execute("SET GLOBAL group_concat_max_len=10024");
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后才执行查询:
Query query = session.createSQLQuery(
"select group_concat(eg.name) " +
"from event_groups eg " +
"left join theatres t ON t.theatre_id = eg.theatre_id " +
"group by t.theatre_id order by t.application_name");
List<Object[]> lstResult = query.list();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |