Ассоциация OneToOne В JPA не работает использование загрузочных данных Spring и данных JPA - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь реализовать ассоциацию OneToOne в JPA и пытаюсь объединить две таблицы, используя пружинную загрузку и пружинные данные JPA.Я создал один микросервис с пружинной загрузкой и внедрил однозначное сопоставление в моей модели.Но когда я запускаю код, я получаю следующую ошибку:

Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElement

Здесь мой первый класс модели Users.java похож на следующий,

@Entity
@Table(name = "users")
public class Users implements Serializable {

private static final long serialVersionUID = 9178661439383356177L;

@Id

@Column(name="user_id")
public Integer userId;

@Column(name="username")
public String username;

@Column(name="password")
public String password;


}

И я проверяю ассоциацию с помощью контроллераиспользуя следующий код,

@GetMapping("/load")
    public Users load() {
        return (Users) userObj.findAll();
    }

Может ли кто-нибудь помочь решить эту проблему ассоциации, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Аннотация @OneToOne определяет однозначное сопоставление с другим объектом, и в вашем случае вы связываете пользователя с набором UserRoleMapping вместо того, чтобы связывать его с одним объектом этого класса.Используйте аннотацию @ManyToOne

0 голосов
/ 27 августа 2018

На самом деле исключение относится к недопустимому @OneToMany, @ManyToMany or @CollectionOfElement отображению

, и это может быть только

@OneToMany()
@JoinColumn(name="nuser_id" , referencedColumnName="nuserId")
public Users nuserId;

Если отношение @OneToMany действительно, сначала измените его на

@OneToMany()
@JoinColumn(name="nuser_id" , referencedColumnName="nuserId")
public List<Users> users;

Если отношение @OneToMany равно НЕ , измените его на

@OneToOne()
@JoinColumn(name="nuser_id" , referencedColumnName="nuserId")
public Users users;
0 голосов
/ 27 августа 2018

Это неправильно.

@OneToOne(mappedBy="nuserId")
public Set<UserRoleMapping> roleUserRoleMappingMappingJoin;
}

OneToOne означает только один объект ... верно?

См. Это для понимания отображений.

https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html#collections-persistent

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