У меня есть сущность с двумя атрибутами, они связаны с двумя другими сущностями с @ ManyToOne отношениями.Первый относится к одному столбцу, второй имеет составной первичный ключ, который настаивает на том же столбце.
Я хотел бы, чтобы во время вставки, когда сущность с составным первичным ключом была нулевой, другая сущность оценивалаколонка, но это не так.Я ищу аннотации, которые помогают мне отобразить отношения.
Allegato:
@Entity
@Table(name="allegato", schema="schema")
@NamedQuery(name="Allegato.findAll", query="SELECT a FROM Allegato a")
public class Allegato extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(name="ide_allegato")
@SequenceGenerator(name = "allegato_seq", sequenceName = "allegato_seq", schema = "schema", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "allegato_seq")
private Integer ideAllegato;
//other attributes
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ide_scheda", insertable=false, updatable=false)
private Scheda scheda;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="ide_norma", referencedColumnName="ide_norma"),
@JoinColumn(name="ide_scheda", referencedColumnName="ide_scheda")
})
private SchedaNorma schedaNorma;
Scheda:
@Entity
@Table(name="scheda", schema="schema")
@NamedQuery(name="Scheda.findAll", query="SELECT s FROM Scheda s")
public class Scheda extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(name="ide_scheda")
@SequenceGenerator(name = "scheda_seq", sequenceName = "schema.scheda_seq", schema = "schema", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "scheda_seq")
private Integer ideScheda;
@OneToMany(mappedBy="scheda", cascade = CascadeType.ALL)
private List<SchedaNorma> schedaNormas;
@OneToMany(, mappedBy="scheda", cascade = CascadeType.ALL)
private List<Allegato> allegatos;
//other attributes
SchedaNorma (таблица ассоциации для сущности Scheda исущность Норма):
@Entity
@Table(name="scheda_norma", schema="schema")
@NamedQuery(name="SchedaNorma.findAll", query="SELECT s FROM SchedaNorma s")
public class SchedaNorma extends BaseEntity {
private static final long serialVersionUID = 1L;
@EmbeddedId
private SchedaNormaPK id;
@OneToMany(mappedBy="schedaNorma")
private List<Allegato> allegatos = new ArrayList<>();
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ide_scheda" , insertable=false,updatable=false)
private Scheda scheda;
SchedaNormaPK:
@Embeddable
public class SchedaNormaPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="ide_scheda")
private Integer ideScheda;
@Column(name="ide_norma")
private Integer ideNorma;
Когда я вставляю Allegato и SchedaNorma имеет значение, все в порядке, но если SchedaNorma имеет значение null, Hibernate (очевидно) устанавливает значение столбца ide_schedaв ноль.