gpt4 book ai didi

java - Hibernate 映射不工作

转载 作者:行者123 更新时间:2023-12-02 06:39:51 25 4
gpt4 key购买 nike

尝试实现 Spring Security,但无法映射角色和用户。所以我有“users”、“roles”和“user_role_connector”数据库表:

CREATE TABLE users (
user_pk INT NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (user_pk));

CREATE TABLE roles (
role_pk INT NOT NULL AUTO_INCREMENT,
role VARCHAR(20) NOT NULL UNIQUE,
PRIMARY KEY (role_pk));

CREATE TABLE user_role_connector (
urc_pk INT NOT NULL AUTO_INCREMENT,
user_fk INT NOT NULL,
role_fk INT NOT NULL,
FOREIGN KEY (user_fk) REFERENCES users(user_pk),
FOREIGN KEY (role_fk) REFERENCES roles(role_pk),
PRIMARY KEY (urc_pk));

我有角色和用户的实体类。两者都有效,直到我添加映射:

@Entity
@Table(name = "users")
public final class UserAccount {

private int user_pk;
...

@OneToOne(cascade=CascadeType.ALL)
@JoinTable(name = "user_role_connector",
joinColumns = {@JoinColumn(name = "user_fk", referencedColumnName = "user_pk")},
inverseJoinColumns = {@JoinColumn(name = "role_fk", referencedColumnName = "role_pk")}
)
private Role role;

@Entity
@Table(name = "roles")
final public class Role {

private int role_pk;
private String role;

@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_role_connector",
joinColumns = {@JoinColumn(name="role_fk", referencedColumnName="role_pk")},
inverseJoinColumns = {@JoinColumn(name="user_fk", referencedColumnName="user_pk")}
)
private Set<UserAccount> userRoles;

为什么不映射?出现的错误是从按字母顺序排列的第一个 Controller 创建 bean 错误,因此它一定是错误的映射。

有什么好的 Spring Security 教程吗?

编辑:忘记写这些类可以工作,直到将“角色”字段添加到 userAccount 并将 userRoles 添加到角色。这里只显示有错误的代码。抱歉英语不好。

最佳答案

我认为,UserAccount 和 Role 类之间存在矛盾。 UserAccount 将 user_role_connector 表描述为 OneToOne,而 Role 描述与 OneToMany 相同的关系。

关于java - Hibernate 映射不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com