Мы используем MsSql Server в нашем проекте.В настоящее время мы используем этот образ докера: mcr.microsoft.com/mssql/server:2017-CU12-ubuntu
Теперь у меня проблема с сгенерированным запросом.Метод репозитория выглядит так: List<A> findByStatus(Status status);
(сокращенный) сгенерированный запрос:
select a0_.id as id1_60_,
(SELECT count(a0_.id) from B b where b.aId = a0_.id AND b.status in ('A', 'B', 'C', 'D')) as formula4_
from dbo.A a0_
where a0_.status = ?;
Сбой при выполнении этого запроса:
Column 'dbo.A.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Я думаю,эта часть неверна: ... SELECT count(a0_.id) from B b ...
.a0_.id
не является частью B. Он работает, если я вручную изменяю его на b0_.id
.
Моя конфигурация Spring:
spring:
datasource:
url: "jdbc:sqlserver://localhost:1433"
username: sa
password: PW12345!
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.SQLServer2012Dialect
default_schema: "dbo"
format_sql: true
show-sql: true
hibernate:
naming:
physical-strategy: de.a.b.c.common.persistence.MyNamingStrategy
Стратегия форматирует только все имена в верхнем регистре.
@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
if (name == null) {
return null;
}
return new Identifier(name.getText().toUpperCase(), name.isQuoted());
}