我正在使用带有注释的hibernate,我已经创建了两个实体,一个名称是User,另一个是Chatroom。我想定义双向多对多映射。但是在一个实体中,它不允许我应用多个注释并给出错误"多对多的映射属性值类型不应该是持久性实体" 这是实体
@for (int i = 0; i < Model.Requirements.Count; i++)
{
@Html.HiddenFor(m => m.Requirements[i].RId)
@Html.CheckBoxFor(m => m.Requirements[i].IsSelected, new { id = "requirements_" + i, @class = "divider" })
@Html.DisplayFor(m => m.Requirements[i].RName)
}
其他课程是Chatroom
package com.ciit.onlineexam.model;
import com.ciit.onlineexam.util.Mailer;
import org.apache.commons.io.FileUtils;
import javax.jws.soap.SOAPBinding;
import javax.persistence.*;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.*;
@Entity
@Table(name="users")
public class User implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id_users")
public int getId_user() {
return id_user;
}
private int id_user;
public void setId_user(int id_user) {
this.id_user = id_user;
}
@Column(name = "email")
private String email;
@Column(name="password")
private String password;
@Column(name = "name")
private String name;
private String reg_id;
private String contact;
@Column(name="isInformed")
private boolean informed;
//Giving error on this list
@ManyToMany(cascade = CascadeType.ALL)
private List<Chatroom> chatrooms = new ArrayList<Chatroom>(0);
public User(){}
public List<Chatroom> getChatrooms() {
return chatrooms;
}
public void setChatrooms(List<Chatroom> chatrooms) {
this.chatrooms = chatrooms;
}
public boolean isInformed() {
return informed;
}
public void setInformed(boolean informed) {
this.informed = informed;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getReg_id() {
return reg_id;
}
//public void setClas(Set<Clas> clas) {
// this.clas=clas;
//}
public void setReg_id(String reg_id) {
this.reg_id = reg_id;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
@OneToMany(mappedBy = "primaryKey.user",cascade = CascadeType.ALL)
public Set<ClassesStudents> getClassesStudents() {
return classesStudents;
}
private Set<ClassesStudents> classesStudents;
public void setClassesStudents(Set<ClassesStudents> classesStudents) {
this.classesStudents = classesStudents;
}
public List<User> sendMailForAccountDetails(List<User> users, String path) throws Exception {
List<User> users1 = new ArrayList<User>();
for (User user : users) {
if (!user.isInformed()) {
Mailer mailer = new Mailer();
String subject = "You have been added to AcademicsTOOLS ";
String emailContents = FileUtils.readFileToString(new File(path + "emailTemplates" + "/" + "SendAccountDetails.html"));
emailContents = emailContents.replaceAll("-AddedStudentName-", user.getName());
emailContents = emailContents.replaceAll("-emailId-", user.email);
emailContents = emailContents.replaceAll("-accountPassword-", user.getPassword());
// emailContents = emailContents.replaceAll("-ProfileLink-", path);
mailer.postMail(user.email, subject, emailContents);
user.setInformed(true);
users1.add(user);
System.out.println("Reached in email AD ==================================================");
}
}
return users1;
}
public User sendMailForAccountDetails(User user, String path) throws Exception {
List<User> users = new ArrayList<User>();
users.add(user);
sendMailForAccountDetails(users, path);
user.setInformed(true);
return user;
}
@Override
public String toString() {
return "User{" +
"id_user=" + id_user +
", email='" + email + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
", reg_id='" + reg_id + '\'' +
", contact=" + contact +
'}';
}
}