mappedBy ссылается на неизвестную роль свойства целевого объекта на основе - PullRequest
2 голосов
/ 05 марта 2020

1 пользователь ==> много ролей

1-роль ==> много компонентов

для этого я настроил как

userDao. java

@Entity
@Table(name = "User_info")
public class UserDao {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userId;
    @Column(name="username")
    private String username;
    @Column(name="password")
    @JsonIgnore
    private String password;
    @ManyToMany(cascade=CascadeType.MERGE,fetch = FetchType.EAGER)
    @JoinTable(
       name="user_role",
       joinColumns={@JoinColumn(name="USER_ID", referencedColumnName="userId")},
       inverseJoinColumns={@JoinColumn(name="ROLE_ID", referencedColumnName="roleId")})
    private List<Role> roles;

Роль. java

@Entity
@Table(name = "roles")
public class Role {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer roleId;
    @Column(nullable = false, unique = true)
    @NotEmpty
    private String roleName;

    @ManyToMany(mappedBy = "roles")
    private List < UserDao > users;

    @ManyToMany(cascade=CascadeType.MERGE,fetch = FetchType.EAGER)
    @JoinTable(
       name="role_component",
       joinColumns={@JoinColumn(name="ROLE_ID", referencedColumnName="roleId")},
       inverseJoinColumns={@JoinColumn(name="COMP_ID", referencedColumnName="compId")})
    private List<Component> components;

компонент. java

@Entity
@Table(name = "component")
public class Component {

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer compId;
    @Column(nullable = false, unique = true)
    @NotEmpty
    private String compName;

    @ManyToMany(mappedBy = "component")
    private List < Role > roles;

Я получаю следующую ошибку. Пожалуйста, предложите ошибку

Вызывается: org.hibernate.AnnotationException: mappedBy ссылается на неизвестное свойство целевого объекта: net .springboot.helloworldapp.bean.Role .component в net .springboot.helloworldapp.bean.Component.roles at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass (CollectionBinder. java: 785)

1 Ответ

0 голосов
/ 05 марта 2020

Есть опечатка. component должно быть components.

@ManyToMany(mappedBy = "components") // <- should be components private List < Role > roles;

...