В проекте весенней загрузки 2 с hibernate и jpa,
Я пытаюсь сохранить какой-то объект
@Embeddable
public class EmbedddedSamplesKey implements Serializable {
private Integer id;
private int year;
...
}
@Entity
@IdClass(EmbedddedSamplesKey.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {
@Id
@GeneratedValue
private Integer id;
@Id
private int year;
@OneToMany(mappedBy = "sampling", cascade = CascadeType.PERSIST, orphanRemoval = true)
private List<Samples> samples = new ArrayList<>();
public void addSample(Samples sample) {
samples.add(sample);
sample.setSampling(this);
}
public void removeSample(Samples sample) {
samples.remove(sample);
sample.setSampling(null);
}
...
}
@Entity
public class Samples extends BaseEntity {
@Id
@SequenceGenerator(name = "samples_id_seq", sequenceName = "samples_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "samples_id_seq")
private Integer id;
private String letter;
//@OneToOne(optional = false, cascade = CascadeType.PERSIST)
//private TestSamples testSamples;
@ManyToOne
private Samplings sampling;
...
}
Когда я сохраняю выборку, я вижу в таблице образцов затем
sampling_id sampling_year
не являются фидом
Это должна быть работа orm, чтобы сделать это?
В примерах, orm сгенерировал это
ALTER TABLE samples
ADD CONSTRAINT fkq5if151jgtlcy7yfp55ffvf47 FOREIGN KEY (sampling_id, sampling_year)
REFERENCES samplings (id, year)
ON UPDATE NO ACTION
ON DELETE NO ACTION;
Редактировать, пробовал
@ManyToOne
@JoinColumns({
@JoinColumn(name = "sampling_id", referencedColumnName = "id"),
@JoinColumn(name = "sampling_year", referencedColumnName = "year")})
private Samplings sampling;
, но тот же результат
Кроме того, если в примерах я хотел бы использовать как выборка первичного + буква поля, как первичный ключ, есть ли способ сделатьэто?