Я назвал запросы из производственного кода, которые используют метод Oracles SUBSTR()
. Как я могу заставить эти звонки работать с H2s SUBSTRING()
?
Я пытаюсь проверить с H2. Я создал копию hibernate.cfg.xml
и изменил ее, чтобы она подключалась к базе данных H2. hibernate.cfg.xml
ссылается на некоторые *.hbm.xml
файлы, а некоторые из них содержат именованные запросы, используя Oracle SUBSTR()
.
Я видел документацию по CREATE ALIAS
(http://h2database.com/html/commands.html#create_alias),, но не могу придумать, как заставить ее работать достаточно рано, чтобы новая команда была доступна даже во время инициализации Hibernate.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Jun 24, 2019 4:01:01 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.0.9.Final}
Jun 24, 2019 4:01:01 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000205: Loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false}
Jun 24, 2019 4:01:01 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Jun 24, 2019 4:01:02 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Jun 24, 2019 4:01:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Jun 24, 2019 4:01:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:mem:test;MODE=Oracle]
Jun 24, 2019 4:01:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=sa, password=****}
Jun 24, 2019 4:01:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Jun 24, 2019 4:01:03 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jun 24, 2019 4:01:03 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
Jun 24, 2019 4:01:05 PM org.hibernate.internal.SessionFactoryImpl <init>
ERROR: HHH000177: Error in named query: findKindIdXXXXXXXXX
org.hibernate.QueryException: undefined alias: SUBSTR [SELECT
xxx.yyyyy, SUBSTR(nmvz.eigKennzeichen, 2, 1)
FROM
[...]
WHERE
[...]
Как определить псевдоним достаточно рано при инициализации гибернации, чтобы это сообщение об ошибке исчезло?