Первичный ключ с двумя полями - PullRequest
0 голосов
/ 18 мая 2018

Я ищу способ создания первичного ключа с двумя значениями.

Мне нужно получить текущий год, добавить его в последовательность (эту последовательность необходимо перезапускать в начале каждого года.

Для 2018

First record: 20181
Second record: 20182

Для 2019

First record: 20191

Я думал использовать embededid, который включает последовательностьчто я буду сбрасывать каждый год.

Редактировать

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Cars {

    @EmbeddedId
    private EmbedddedCarsKey id;

}

@Embeddable
public class EmbedddedCarsKey implements Serializable {

    private int year;

    @SequenceGenerator(name = "cars_id_seq", sequenceName = "cars_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cars_id_seq")
    private Integer seq

    public EmbedddedCarsKey();
      year = LocalDate.now().getYear();
    }

}

Когда я пытаюсь сохранить, я получаю

Cars cars = new Cars();
cars.setName("Honda");

carsRepository.save(cars);

org.hibernate.id.IdentifierGenerationException:для: класса com.ush.mcl.model.Cars сгенерирован пустой идентификаторнуль;

...