作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!