JPA中的OneToOne关联在使用Spring Boot和Spring Data JPA时无法正常工作

时间:2018-08-27 07:01:15

标签: spring-boot jpa model-associations

我试图在JPA中实现OneToOne关联,并尝试使用spring boot和spring数据JPA联接两个表。我创建了一个spring boot微服务,并在我的模型中实现了一对一关联。但是当我运行代码时,出现以下错误,

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 :(得分:2)

这是错误的。

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

OneToOne仅意味着一个对象。对吗?

有关映射的理解,请参见此。

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

答案 1 :(得分:0)

Annotation @OneToOne定义与另一个实体的单值关联,在您的情况下,您将用户关联到一组UserRoleMapping,而不是将其与该类的单个对象关联。使用@ManyToOne注释

答案 2 :(得分:0)

实际上,异常是指无效的@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;