解决方案 »

  1.   

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USER_ID", nullable = false)
    public User getUser() {
    return user;
    }
      

  2.   

    暂不说你这样做的一个极大的危险在哪里。
    本着先解决问题的原则,我说一下错误的可能性:subject.setUser(user);
    hibernateTemplate.persist(subject);从代码来看,subject与user有关系,但反之则没有,恰恰你把User设为了主控端,所以框架提示“detached entity”错误。也就是说需要在user里能添加subject对象才行,在User.java代码里加上://User.java
    public void addSubject(Subject subject){
        if(this.subjects == null){
            this.subjects = new ArrayList<Subject>(1);
        }
        subject.setUser(this);
        this.subjects.add(subject);
    }//UserDaoimpl.java
    user.addSubject(subject);
    hibernateTemplate.persist(subject);至于这套方案中极大的危险或不合理性在哪里,用了后就会知道。