Spring данных JPA несколько отношений oneToMany в одном классе - PullRequest
0 голосов
/ 30 мая 2018

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

Вот мой класс сущностей:

@Entity
@Table(name = "user_group")
@Data
public class Group implements IPublicEntity<Group> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "group_id", updatable = false)
    @JsonIgnore
    private int id;

    @NotEmpty
    @Column(name = "group_name", unique = true)
    @Size(max = 50)
    private String groupName;

    @OneToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "creator")
    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "publicId")
    @JsonIdentityReference(alwaysAsId = true)
    ApplicationUser creator;

    @OneToMany(cascade = CascadeType.MERGE, orphanRemoval = true)
    @JoinTable(name = "group_admin",
            joinColumns = @JoinColumn(name = "group_id"),
            inverseJoinColumns = @JoinColumn(name = "app_user_id"))
    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "publicId")
    @JsonIdentityReference(alwaysAsId = true)
    List<ApplicationUser> admins = new ArrayList<>();

    @OneToMany(cascade = CascadeType.MERGE, orphanRemoval =  true)
    @JoinTable(name = "group_member",
            joinColumns = @JoinColumn(name = "group_id"),
            inverseJoinColumns = @JoinColumn(name = "app_user_id"))
    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "publicId")
    @JsonIdentityReference(alwaysAsId = true)
    List<ApplicationUser> members = new ArrayList<>();
}

sql table:

user_group (
  group_id   SERIAL PRIMARY KEY,
  group_name VARCHAR(50) NOT NULL,
  creator    INTEGER     NOT NULL REFERENCES app_user (app_user_id)
);

group_admin (
  group_id INTEGER NOT NULL REFERENCES user_group (group_id),
  user_id  INTEGER NOT NULL REFERENCES app_user (app_user_id),
  PRIMARY KEY (group_id, user_id)
);

group_member (
  group_id INTEGER NOT NULL REFERENCES user_group (group_id),
  user_id  INTEGER NOT NULL REFERENCES app_user (app_user_id),
  PRIMARY KEY (group_id, user_id)
);

Когда я пытаюсь добавить участника в группу и сохранить группу, выдается ошибка ERROR: column members0_.app_user_id does not exist Position: 2519.Но я уже настроил приложение для просмотра таблицы group_member вместо таблицы по умолчанию.Почему это все-таки выдает ошибку.

Спасибо.

...