2016-05-28 2 views
1

Так я использую Postgres и Hibernate 4.2.2 и с организацией, как этоForce зимуют оставить идентификатор пустым

@Entity(name = "Users") 
@Check(constraints = "email ~* '^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+[.][A-Za-z]+$'") 
@DynamicInsert 
public class Users { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id_user",unique = true) 
    @Index(name = "user_pk") 
    private Integer idUser; 

Hibernate еще вставляет некоторый идентификатор, который уже есть в таблице, вместо того, чтобы оставить его пуста для базы данных, чтобы заполнить его. Также hibernate заставляет идентификаторы на основе своего кеша даже не проверять базу данных, имеет ли она идентификатор lates.

Как я могу заставить его, чтобы я мог оставить id пустым и позволить базе данных вставить его?

Сначала я подумал, что это связано с тем, что я использовал int и что int по умолчанию 0, но даже при использовании объекта он просто выдает идентификатор из его кеша.

Итак, я хочу, чтобы база данных заполнила идентификаторы вместо спящего режима или, по крайней мере, Hibernate, прежде чем заполнять его, чтобы сначала проверить базу данных для идентификатора.

+0

показать нам код, который вы используете для вставки вашей сущности. –

+0

ОК, поэтому ошибка здесь заключалась в том, что при вставке в Postgres без использования последовательности (улучшение данных при создании базы данных) последовательность остается без приращения, и это было ошибкой –

+0

отправьте его в качестве ответа на ваш вопрос –

ответ

0

Так ошибка я получаю был
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "users_pkey" Detail: Key (id_user)=(1) already exists.
И это не было вызвано Hibernate и кэширования, но за счет импорта данных при создании базы данных, где я вставленной с заданными идентификаторами, например:
INSERT INTO users(id_user,email,password,tag) VALUES (1,'[email protected]','***','Adpleydu');
и последовательность для генерации не обновлялся, поэтому, если я вставил с чистым SQL через консоль, я получил ту же ошибку.

+0

не комбинировать вручную введенные идентификаторы и автогенерированные –

Смежные вопросы