2017-02-02 3 views
0

Я очень новичок в Hibernate. Я использую Hibernate с JPA. У меня есть аннотированный класс сущности и таблица, связанная с этим классом сущности.Удалить повторяющуюся запись '59' для ключа 'ПЕРВИЧНЫЙ в спящем

@Entity 
public class Test implements Serializable { 
    @Id 
    @GenericGenerator(name="inc" , strategy="identity") 
    @GeneratedValue(generator="inc") 
    private int id; 

    private String address; // setter getter and constructor 
} 

При сохранении этого объекта он вставляет данные в db. Но во время запуска приложения другое приложение вставляет данные в одну таблицу. когда мое приложение попытается сохранить данные, затем Дублируйте запись «59» для генерируемого исключения «PRIMARY». Поэтому я хочу использовать генератор, который может вставлять данные и генерировать идентификатор на уровне базы данных, а не на уровне приложения, и идентификатор должен быть сохранен обратно в мою сущность.

ответ

0

Используйте стратегию генератора таблиц или генератор последовательности.

+0

Я согласен с вами. Но мне нужен генератор, который может получить max (id) каждый раз перед вставкой объекта. Bcz это может быть, кто-то вручную вставляет данные в таблицу. В это время генератор таблицы также не работает. Пожалуйста, направляйте меня. –

+0

Если кто-то напрямую обновляет таблицу, то в этом случае вам нужно вручную позаботиться о ID, то есть перед тем, как вставить запись, выберите max id и сделайте +1 на нем и сохраните. –

0

Вам не нужно указывать генератор. Вы можете использовать генератор по умолчанию и никогда не устанавливать идентификатор вручную. Если ошибка по-прежнему возникает после вашего метода merge/persist.

Дополнительная информация о генераторах можно найти здесь вы https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing

@Entity 
public class Test implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; 

    private String address; // setter getter and constructor 
} 
Смежные вопросы