Проблема здесь заключается в том, что EclipseLink PostgreSQLPlatform жестко кодирует строку, которую он использует в пределах printFieldIdentityClause, в значение «SERIAL». Это должно быть настраиваемо, поэтому, пожалуйста, отправьте сообщение об ошибке, чтобы оно изменилось.
Кроме использования columnDefinition, вы можете создать подкласс PostgreSQLPlatform и переопределить метод printFieldIdentityClause, чтобы распечатать то, что вам нужно. То есть:
@Override
public void printFieldIdentityClause(Writer writer) throws ValidationException {
try {
writer.write(" SERIAL");
} catch (IOException ioException) {
throw ValidationException.fileError(ioException);
}
}
, а затем установите вместо свойств вашего модуля персистентности класс вашей платформы:
<property name="eclipselink.target-database" value="yourpackage.yourPlatformClass"/>