I'm currently wokring on a product with the following conditions:
- Spring-Boot (2.6) with Camunda embedded (7.16)
- Connection to Camunda configured to use H2 (2.1.210) embedded with the following is configured in application.yml:
app:
datasource-camunda:
jdbcUrl: jdbc:h2:./h2/test;MODE=LEGACY
camunda:
bpm:
database:
schema-update: true
auto-deployment-enabled: true
and as Java-Configuration:
@Bean("camundaBpmDataSource")
@ConfigurationProperties
public DataSource camundaDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public PlatformTransactionManager camundaBpmTransactionManager(DataSource datasource) {
return new DataSourceTransactionManager(datasource)
}
The camunda engine is not configured explicitly since I used the appropriate starter and let Spring auto configured it. As a result the resulting setup should look very similar to the embedded camunda h2 configuration showed here: https://docs.camunda.org/get-started/spring/embedded-process-engine/
The application runs good with this setup. No problems with the application at all, but I faced an issue while logging in to the camunda cockpit. Login succeeds but then I see an error in the login mask saying:
Login Failed
An exception occured in the persistence layer. Please check the server logs for a detailed message and the entire exception stack trace
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Unbekannter Datentyp: "?2"
Unknown data type: "?2"; SQL statement:
SELECT
CASE
WHEN
EXISTS
(SELECT
A.RESOURCE_ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 1
AND
A.USER_ID_ = ?
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = ? )
THEN 1
WHEN
EXISTS
(SELECT
ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 1
AND
A.USER_ID_ = ?
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = '*')
THEN 1
ELSE
(
SELECT
CASE
WHEN
EXISTS
(SELECT
A.RESOURCE_ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 1
AND
A.GROUP_ID_ IN ( ? )
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = ? )
THEN 1
WHEN
EXISTS
(SELECT
ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 1
AND
A.GROUP_ID_ IN ( ? )
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = '*')
THEN 1
ELSE (
SELECT
CASE
WHEN
EXISTS
(SELECT
A.RESOURCE_ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 0
AND
A.USER_ID_ = '*'
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = ? )
THEN 1
WHEN
EXISTS
(SELECT
ID_
FROM
ACT_RU_AUTHORIZATION A
WHERE
A.TYPE_ = 0
AND
A.USER_ID_ = '*'
AND
BITAND(A.PERMS_,?) = ?
AND
A.RESOURCE_TYPE_ = ?
AND
A.RESOURCE_ID_ = '*')
THEN 1
ELSE
null
END
)
END
)
END [50004-210]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:573) ~[h2-2.1.210.jar:2.1.210]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) ~[h2-2.1.210.jar:2.1.210]
at org.h2.message.DbException.get(DbException.java:227) ~[h2-2.1.210.jar:2.1.210]
I already took a look into the database and saw all tables where created sucesfully, so does anybody faced a similar issue?
CodePudding user response:
Remove the "MODE=LEGACY" from the url. Here is a working example:
Also ensure you use a supported H2 version. That is 1.4.x fro 7.16.x: https://docs.camunda.org/manual/7.16/introduction/supported-environments/
The BOM will inclcude H2 1.4.200.