多对多的映射属性值类型不应该是持久化实体

时间:2016-04-28 14:41:01

标签: hibernate annotations mappings

我正在使用带有注释的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 +
                '}';
    }


}

0 个答案:

没有答案