Первичный ключ автоматически генерируется Oracle, который является @Id в моей сущности - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть объект, значение которого для столбца @Id генерируется из последовательности со стороны БД для каждой вставки, т.е. мне не нужно заполнять это значение из моей службы при выполнении вставки.

Если яне заполняйте значение, JPA / Hibernate жалуется, что мой @Id не может быть нулевым.Если я использую генератор последовательностей Oracle и заполняю значение для моего @Id во время вставки, моя БД жалуется на то, что «невозможно вставить в сгенерированный столбец всегда идентификаторов»

Я использую Oracle10g Dialect.

Я испробовал все стратегии для GenerationType - АВТО, ИДЕНТИЧНОСТЬ, ПОСЛЕДОВАТЕЛЬНОСТЬ, ТАБЛИЦА, без упоминания какой-либо последовательности.

@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "INTERACTION_ID", unique = true, nullable = false)
public BigDecimal getINTERACTION_ID() {
    return INTERACTION_ID;
}

К сожалению, моя команда БД не согласна изменить ограничения на этот столбец.Я ищу вариант, где я могу вставить данные через свой постоянный объект, не заполняя значение для столбца @Id, и иметь автоматическую вставку БД для меня.

Вот часть моего DDL:

CREATE TABLE MY_SCHEMA.MY_TABLE
(
INTERACTION_ID NUMBER(28, 0) DEFAULT "MY_SCHEMA"."ISEQ$$_85362".nextval NOT 
NULL,
...,
...)

Пожалуйста, помогите мне здесь.

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте установить вставляемое и обновляемое значение false, чтобы Hibernate не пытался установить идентификатор.

@Id
@Column(name = "INTERACTION_ID", unique = true, nullable = false, insertable = false, updatable = false)
public BigDecimal getINTERACTION_ID() {
    return INTERACTION_ID;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...