Последовательность гибернации в сочетании с операторами вставки не работает - PullRequest
1 голос
/ 28 марта 2012

У меня ранее была таблица, созданная с использованием спящих объектов.Я использую метод hibernate import.sql для ввода группы данных, которые должны быть запущены до моих модульных тестов.Это все в операторах вставки.

Все работало нормально, пока изменение дизайна не заставило нас переключиться на использование сгенерированного PK вместо старого PK NaturalId.Теперь ни одна из моих вставок не работает и в спящем режиме не выкладывает никаких ошибок.Пожалуйста, помогите!

@Entity
@Table(name="PERSON")
@GenericGenerator(name="PERSON_SEQ", strategy = "sequence",
 parameters = { @Parameter(name="sequence", value="PERSON_SEQ") } )
public class PersonEntity implements Serializable {

@Id 
@GeneratedValue( strategy=GenerationType.SEQUENCE, generator="PERSON_SEQ")
@Column(name="PERSON_ID", nullable=false, updatable=false)
private Long id;

@NaturalId
@NotNull
@Min(1)
@Column(name="FIRST_NAME", nullable=false, updatable=false)
private String firstName;

//More code....

И для моих операторов вставки ...

INSERT INTO "PERSON" (PERSON_ID, FIRST_NAME, LAST_NAME, SOCIAL_SECURITY) VALUES (PERSON_SEQ.NEXTVAL, 'John', 'Doe', '111111111');

Мне было бы наплевать, работает ли вставка с помощью создания спящего объекта в этом случае.Гораздо важнее, чтобы операторы SQL вставки работали.

Кроме того, я установил режим гибернации на INFO и показал, что sql имеет значение true, но сообщений об ошибках по-прежнему нет ... Любая помощь очень важна.

Ответы [ 2 ]

2 голосов
/ 02 октября 2013

Вы также можете вставить фиксированные числа (я делаю это, чтобы сделать FK для других таблиц) и в конце вашего import.sql добавить команду, чтобы изменить вашу последовательность. Как это:

insert into person values (1, 'John');
insert into person values (2, 'Pedro');
insert into person values (3, 'Junior');
ALTER SEQUENCE hibernate_sequence RESTART WITH 15;

Проверьте синтаксис Oracle, чтобы сделать то же самое.

0 голосов
/ 29 марта 2012

Я думаю, что проблема здесь связана со мной модульным тестированием в Hypersonic.Я не уверен, знаком ли кто-либо из вас с этим, но это - модульное тестирование, которое использует моя команда.Спасибо за комментарии.Я смог решить мою проблему, выполнив следующие обходные пути:

Жесткий код идентификатора для определенных столбцов с 1 для первого значения и затем выберите max (id) + 1 для каждого последующего столбца.После того, как все данные вставлены, я увеличиваю последовательность до нужного значения с помощью PL / SQL.

Спасибо всем за помощь.

...