JPA отображения для двунаправленной модели - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть две таблицы Родитель и Ребенок.Я хочу, чтобы столбцы "id" и "uuid" из Parent записывались в Child, когда они создаются в parent (однонаправленные).Я не могу видеть 2 записи в дочерней таблице для каждой родительской записи, следуя приведенной ниже комбинации модель / аннотация для Postgres и Spring Data JPA. Кто-то, пожалуйста, помогите:

Parent.java:

import lombok.Data;
import lombok.ToString;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "parent")
@Data
@ToString(exclude = {"child"})
public class Parent implements Serializable {

    private static final long serialVersionUID = 145286864858301707L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "parentSequence")
    @SequenceGenerator(sequenceName = "parent_seq", allocationSize = 1, name = "parentSequence")
    @Column(name = "id")
    private Long id;

    @NotNull
    @Column(name = "uuid", nullable = false)
    private String uuid;

    @OneToMany(
            targetEntity = Child.class,
            mappedBy = "parent",
            cascade = CascadeType.ALL,
            orphanRemoval = true)
    private List<Child> child = new ArrayList<>();
}



Child.java:

import lombok.Data;
import lombok.ToString;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

@Entity
@Table(name = "child")
@Data
@ToString(exclude = "parent")
public class Child implements Serializable {

    private static final long serialVersionUID = 2925636680004485119L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "childSequence")
    @SequenceGenerator(sequenceName = "child_seq", allocationSize = 1, name = "childSequence")
    @Column(name = "id")
    private Long id;

    @NotNull
    @Column(name = "uuid", nullable = false)
    private String uuid;

    @ManyToOne(
            targetEntity = NatEntity.class,
            fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "parent_id", referencedColumnName = "id"),
            @JoinColumn(name = "parent_uuid", referencedColumnName = "uuid")
    })
    private Parent parent;
}
...