簡體   English   中英

Hibernate 一對一,不生成外鍵

[英]Hibernate One to One, not generating Foreign key

我這里有 4 個表:注冊、用戶、用戶角色和用戶個人資料圖片

Register 和 User 映射到我的一對一關系,並且在 Users 表中生成 Register 的引用......這很好..

現在談論用戶和角色表之間的一對多關系,它也可以通過在角色表中生成用戶表引用來完美地工作。

但問題是在用戶和個人資料圖像之間進行一對一工作時。 個人資料圖像未生成用戶參考 ....為什么未在個人資料圖像表中生成用戶參考

登記

@Entity
@Getter
@Setter
public class Register {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    @OneToOne(cascade = CascadeType.ALL,orphanRemoval = true,mappedBy = "register")
    private User user;

}

用戶

@Entity
@Getter
@Setter
public class User {

    @Id
    @Column(name = "User_Id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name = "user_id")
    private UserProfileImage userProfileImage;

    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinColumn(name = "user_id")
    private List<UserRoles> userRoles;

}

用戶資料圖片

@Entity
@Getter
@Setter
public class UserProfileImage {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "type")
    private String type;
    @Column(name = "picByte", length = 100000)
    private byte[] picByte;

    public UserProfileImage() {
        super();
    }

    public UserProfileImage(String name, String type, byte[] picByte) {
        this.name = name;
        this.type = type;
        this.picByte = picByte;
    }
}

用戶 class 中的配置文件映射不正確,並且在您的配置文件 class 中沒有用戶字段,因此它不會在配置文件 class 中生成用戶引用。

此外,用戶到角色的映射也不正確,您的用戶 class 不會使用您的映射填充角色。

嘗試這個:

public class User {

    ...
    @OneToOne(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name = "PROFILE_IMAGE_ID")   // foreign key column in User table
    private UserProfileImage userProfileImage;

    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,mappedBy="user")
    private List<UserRoles> userRoles;

}


public class UserProfileImage {
    ...

    @OneToOne(mappedBy="userProfileImage")
    private User user;

    ...
}

public class UserRole {
    ...

    @ManyToOne
    @JoinColumn(name="USER_ID")  // foreign key column in User Role table
    private User user;

    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM