Postgresql / openJPA (geronimo) Проблема с последовательностью - PullRequest
0 голосов
/ 11 мая 2011

У меня странная проблема с последовательностью. Я использую Postgresql 9 с Geronimo 2.2. Я создал последовательность PLANTS_ID_SEQ в среде db, и когда я пытаюсь создать новую сущность, в моих журналах появляется ошибка (которая возникает из postegresql), что существует отношение PLANTS_ID_SEQ. Кажется, что он пытается создать последовательность, которая уже создана. Это код от бина сущности:

@Id 
@GeneratedValue(generator="PLANTS_SEQ",strategy=GenerationType.SEQUENCE) @SequenceGenerator(name="PLANTS_SEQ", sequenceName="PLANTS_ID_SEQ",allocationSize=1) @Column(name = "ID") 
private Integer id; 

Обратите внимание, что если я изменю имя последовательности (eg sequenceName="MY_SEQ"), то код будет работать правильно, но он создаст в postgresql (и, очевидно, использует) последовательность MY_SEQ. Если у кого-то есть подсказка по этому делу, пожалуйста, поделитесь Спасибо Джордж

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Если в вашей таблице есть столбец типа SERIAL, postgres создаст для вас последовательность и автоматически использует ее для вставок.

Последовательность, которую она создает, называется "tablename_id_seq" ...

Возможно, вы пытаетесь скопировать то, что уже сделал postgres, и создаете дублирующую последовательность.

0 голосов
/ 15 мая 2011

Решено: Следует добавить в файл persistence.xml следующее свойство:

property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(Sequences=false)" 

Таким образом, MappingTool из openjpa не будет пытаться создать последовательность снова.

...