Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多对多协会。数据不';不删除_Java_Hibernate_Jpa_Orm - Fatal编程技术网

Java 多对多协会。数据不';不删除

Java 多对多协会。数据不';不删除,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,我有这个模型: @Entity @Table(name = "candidate") @XmlRootElement(name = "candidate") public class Candidate{ @ManyToMany(mappedBy = "candidates", fetch = FetchType.EAGER) @XmlTransient public Set<Vacancy> getVacancies() { return vacan

我有这个模型:

@Entity
@Table(name = "candidate")
@XmlRootElement(name = "candidate")
public class Candidate{
@ManyToMany(mappedBy = "candidates", fetch = FetchType.EAGER)
    @XmlTransient
    public Set<Vacancy> getVacancies() {
        return vacancies;
    }
....
}
候选人:

@Override
    public boolean update(Candidate candidate) throws HibernateException{
        Session session = sessionFactory.getCurrentSession();
        if (candidate == null) {
            return false;
        }
        session.update(candidate);

        return true;

    }
我有奇怪的行为。如果我给应聘者增加新的职位空缺,效果会很好。但是,如果我删除空缺,这是行不通的


这对我来说是不理解的。

当你从候选人名单中删除空缺时,别忘了从空缺名单中删除候选人,反之亦然。还请记住:如果您的系统中有某个位置稍后发送已删除的空缺(反之亦然),则该实体将再次保留

@RequestMapping("/saveCandidate")
public String saveCandidate(
        Model model,
        @ModelAttribute("candidateFromRequest") Candidate candidateFromRequest,

        @ModelAttribute("vacanciesForCandidate") Set<Vacancy> vacanciesForCandidate,

        RedirectAttributes redirectAttributes) {

    candidateService.updateCandidateAndLinkedEntities(candidateFromRequest,
            vacanciesForCandidate,...);
    ...
}
    @Transactional
    @Service("candidateService")
    public class CandidateService {
    public void updateCandidateAndLinkedEntities(Candidate candidate,
                Set<Vacancy> vacancies, ...) {

            if (candidate == null)
                throw new NullPointerException("null candidate entity");


            if (vacancies != null) {

                candidate.setVacancies(vacancies);

                for (Vacancy vacancy : vacancies) {
                    vacancy.getCandidates().add(candidate);
                    vacancyDao.update(vacancy);
                }
            }
            candidateDao.update(candidate);//here all right, how I wish(I am about state of candidate entity)

        }
        ...
    }
@Override
    public boolean update(Vacancy vacancy) throws HibernateException {
        Session session = sessionFactory.getCurrentSession();
        if (vacancy == null) {
            return false;
        }
        session.update(vacancy);
        return true;

    }
@Override
    public boolean update(Candidate candidate) throws HibernateException{
        Session session = sessionFactory.getCurrentSession();
        if (candidate == null) {
            return false;
        }
        session.update(candidate);

        return true;

    }