Составной ключ Spring Data JPA, так как EmbeddedId не работает, выдает ошибку при получении сопоставленного объекта - PullRequest
0 голосов
/ 20 октября 2019

Spring Data JPA, составной ключ как @EmbeddedId не работает. Поделиться кодом ниже так просто, как это возможно. Использование lombok, чтобы получить / установить / минусы не показаны. Ниже приведен пример проблемы, которую я пытался достичь.

Сущность пользователей:

@Data
@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue
    @Column(name = "user_id")
    private Long id;
    private String username;
    private String password;
    private String email;

    @OneToMany(mappedBy = "primaryKey.user", cascade = CascadeType.ALL)
    private Set<UserGroup> userGroups = new HashSet<UserGroup>();

}

Сущность группы:

@Data
@Entity
@Table(name = "groups")
public class Group {

    @Id
    @GeneratedValue
    @Column(name = "group_id")
    private Long id;
    private String name;
    @OneToMany(mappedBy = "primaryKey.group", cascade = CascadeType.ALL)
    private Set<UserGroup> userGroups = new HashSet<UserGroup>();

}

Ключ пользователя и группы:

@Data
@Embeddable
public class UserGroupId implements Serializable {

    @JoinColumn(name = "user_id", referencedColumnName = "user_id")
    @ManyToOne
    private User user;

    @JoinColumn(name = "group_id", referencedColumnName = "group_id")
    @ManyToOne
    private Group group;

}

Пользователь и сущность сопоставления группы:

@Data
@Entity
@Table(name = "users_groups")
@AssociationOverrides({
        @AssociationOverride(name = "primaryKey.user", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "user_id")),
        @AssociationOverride(name = "primaryKey.group", joinColumns = @JoinColumn(name = "group_id", referencedColumnName = "group_id")) })
public class UserGroup {

    @EmbeddedId
    private UserGroupId primaryKey = new UserGroupId();

    @Column(name = "activated")
    private Boolean activated;

}

Дает ошибку "com.sun.jdi.InvocationException: возникла исключительная ситуация в целевой виртуальной машине, вызвавший метод" при вызове [user.userGroups].

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