gpt4 book ai didi

java - 如何在 hibernate 中映射两个不相关的类

转载 作者:行者123 更新时间:2023-11-30 22:54:41 24 4
gpt4 key购买 nike

我是 hibernate 的新手,我面临着一个关于映射类的问题。 我有两个类 Song 和 User

public class Song implements Serializable {
private Album album;
private String title;
private int rating;
private String artist;
private String composer;
private Genre genre;
private int songId;
//getters and setters
}

public class user{
private String userName;
private String password;
private int user_id;

//getters and setters
}

我必须将每个用户与其帐户中的歌曲对应起来。为此,我有一个表 user_songs_mapping 表,其中有 song_id 和 user_id 作为列......我不知道如何映射我 hibernate 的这种关系

最佳答案

您应该使用多对多设置,例如带有注释,你会:

class Song {
@ManyToMany
@JoinTable( name = "user_songs_mapping",
joinColumns = @JoinColumn ( name = "song_id", referencedColumnName = "songid" ), //assuming the id column in the song table is named songid
inverseJoinColumns = @JoinColumn ( name = " user_id", referencedColumnName = "userid" ) ) //assuming the id column in the user table is named userid
Set<Users> users;
}

class User {
@ManyToMany( mappedBy = "users" )
Set<Song> songs;
}

请注意,一侧定义表,另一侧仅声明在哪里可以找到映射。在我的示例中,Song 将是拥有方,即您需要更新在 Song 中设置的用户,以使更改保持不变。如果您希望 User 成为拥有方,只需切换注释并加入列即可。

更新: 重读你的问题我假设你想要一个单向关联 user->songs。因此只添加到 User 的关系:

class User{
@ManyToMany
@JoinTable( name = "user_songs_mapping",
joinColumns = @JoinColumn ( name = " user_id", referencedColumnName = "userid" ),
inverseJoinColumns = @JoinColumn ( name = "song_id", referencedColumnName = "songid" ) )
Set<Song> songs;
}

关于java - 如何在 hibernate 中映射两个不相关的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934220/

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