Spring boot 使用Spring引导和Spring数据JPA时,JPA中的OneTONE关联不起作用

Spring boot 使用Spring引导和Spring数据JPA时,JPA中的OneTONE关联不起作用,spring-boot,jpa,model-associations,Spring Boot,Jpa,Model Associations,我试图在JPA中实现OneTONE关联,并尝试使用SpringBoot和SpringDataJPA连接两个表。我创建了一个springbootmicroservice,并在我的模型中实现了一对一的关联。但是当我运行代码时,我得到了以下错误: Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @Collection

我试图在JPA中实现OneTONE关联,并尝试使用SpringBoot和SpringDataJPA连接两个表。我创建了一个springbootmicroservice,并在我的模型中实现了一对一的关联。但是当我运行代码时,我得到了以下错误:

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();
    }
有人能帮忙解决这个关联问题吗?

这是错误的

@OneToOne(mappedBy="nuserId")
public Set<UserRoleMapping> roleUserRoleMappingMappingJoin;
}
@OneToOne(mappedBy=“nuserId”)
公众角色集角色映射;
}
一个一个的意思是只有一个物体,对吗

请参见此了解映射


Annotation@OneToOne定义了与另一个实体的单值关联,在您的案例中,您将用户与一组UserRoleMapping关联,而不是将其与该类的单个对象关联。使用@ManyToOne注释实际上,异常指的是无效的
@OneToMany、@ManyToMany或@collectionfelement
映射

这只能是

@OneToMany()
@JoinColumn(name="nuser_id" , referencedColumnName="nuserId")
public Users nuserId;
如果
@OneToMany
关系有效,首先将其更改为

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

对对于users表中的每个用户,仅将其映射到userrolemapping表中的一个条目。所以这里我认为是一对一的映射。你知道我是怎么想的吗。如果我走错了方向,请告诉我。看起来您想使用manytomany,以便在映射和mappedBy正确的情况下自动创建第三个表。让映射处理一切。请参阅此编号。对于用户中的每个用户记录,请在userrolemapping中拥有相应的记录。所以我认为这是一对一的映射。如果我出错了,请告诉我。感谢您的回复。如果他使用多通,还可以公开设置角色;这对于很多人来说都是错误的,我们应该只有一个对象。如果每个用户在UserRoleMapping中都有一个唯一的记录,那么为什么要使用Set?据我从表名中了解,它是不同表中用户和角色的关联,在这种情况下,您需要使用@manytomanytank you进行响应。但我仍然对这一点表示怀疑。因为users中的每个记录在userrolemapping中都有相应的记录。不多。那么这将是一对多?我不明白你的意思?你有一个角色与许多用户关联。例如,一个角色“用户”可能有多个用户。否。在我的例子中,我使用多租户模型应用程序。在一个租户中,一个用户只有一个角色。可能有不同的,但仅在另一个租户中。不一样。我为每个租户提供了单独的数据库。这里唯一的可能性是一条记录只映射到userrolemapping中的一条记录。我希望我想说的话是正确的。请让我知道,先生,我的回答是关于您的例外情况,而不是咨询您的技术问题。查看我的更新答案。什么文档告诉您在
Users
类型的单值字段上使用
@OneToMany
是正确的?什么文档告诉您在
List
类型的多值字段上使用
@OneToOne
是正确的?它不是多值类型。请检查我更新的问题。错误消息清楚地显示
@OneToMany
,在更改问题之前,您有一个
OneToMany
。现在你没有了。现在错误消息与问题无关。所以,如果你打算重写问题,就打开一个新问题,而不是认为所有的回答都是多余的
@OneToOne()
@JoinColumn(name="nuser_id" , referencedColumnName="nuserId")
public Users users;