@GeneratedValue не работает в поле без идентификатора - PullRequest
0 голосов
/ 14 января 2020

Я бы хотел сделать уникальное поле «число» с автогенерацией (автоинкремент, последнее число + 1). Но это не поле id. Как я могу достичь этого? @GeneratedValue не работает. Только идентификатор был создан. Мой код не работает.

Моя сущность

@Entity
@Table(schema = "public")
public class Policeman implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @Column
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long number;

    @Column
    private String fam;

    @Column
    private String name;

    @Column
    private String otch;

   //setters getters
}

1 Ответ

1 голос
/ 14 января 2020

Этот вопрос SO выглядел одинаково: Link1

В нем говорится, что аннотация @GeneratedValue используется только в сочетании с @Id для создания автоматических номеров. Его нельзя использовать со столбцами без идентификатора. Однако есть обходной путь, который предлагает создать отдельную сущность со сгенерированным идентификатором, что-то вроде этого:

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private Long number;
}

@Entity
@Table(schema = "public")
public class Policeman implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @OneToOne(...)
    private GeneralSequnceNumber myVal;

    @Column
    private String fam;

    @Column
    private String name;

    @Column
    private String otch;

   //setters getters
}

Вы также можете обратиться к следующей ссылке для получения дополнительной информации об этом обходном пути: Link2

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...