Как отобразить столбец дважды в Hibernate с другим типом объекта - PullRequest
1 голос
/ 12 марта 2019

У меня есть сущность с двумя атрибутами, они связаны с двумя другими сущностями с @ 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в ноль.

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