我有以下三个简单的类。 如何在我的Rating.hbm.xml 文件中映射Rating 类,更具体地说是其复合键? 我目前在 hibernate 文档中迷失了方向(5.1.2.1. 复合标识符)
每个评级可以由一本书和一个用户进行该特定评级。 每个用户可以进行多次评分。 每本书可以有多个评级。
类(class)
评级等级
public class Rating {
private User user;
private Book book;
private int rating;
private Date timestamp;
public Rating() {} //No arg contructor for hibernate
...
}
用户类别
public class User {
private long userId;
private String email, password;
public User() {}
...
}
图书类(class)
public class Book {
private long bookId;
private String title;
public Book() {}
...
}
最佳答案
首先,您应该创建一个复合主键类,如下所示:
public class RatingId implements Serializable{
private User user;
private Book book;
private int rating;
// an easy initializing constructor
public PurchasedTestId(User user, Book book, int rating){
this.user = user;
this.book = book;
this.rating= rating;
}
/*create your getter and setters plus override the equals and hashCode() methods */
}
现在创建您的主要评级类,如下所示:
public class RatingBook {
RatingId RatingId;
private Date timestamp;
/* generate getters and setters for these two methods*/
}
您可以尝试以下操作:
<composite-id name=”ratingId”>
<key-property name="user" column="user" />
<key-property name="book" column="book" />
<key-property name="rating" column="pid" />
</composite-id>
看看这是否适合你
关于java - 如何在 hbm.xml 文件中的 hibernate 中创建复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642101/