多对多关联。数据不删除

2024-01-14

我有这个模型:

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

和反向映射:

@Entity
@Table(name = "vacancy")
@XmlRootElement(name="vacancy")
public class Vacancy {@ManyToMany( fetch = FetchType.EAGER)
    @JoinTable(name = "vacancy_candidate", joinColumns = @JoinColumn(name = "vacancy_id"), inverseJoinColumns = @JoinColumn(name = "candidate_id"))
    public Set<Candidate> getCandidates() {
        return candidates;
    }
    ...
}

我有这样的控制器方法:

@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)

        }
        ...
    }

更新方法实现:

vacancy:

@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;

    }

我有奇怪的行为。如果我向候选人添加新的空缺 - 效果很好。但如果我删除空缺 - 它不起作用。

我不明白。


当您从候选人列表中删除职位空缺时,请不要忘记从职位空缺列表中删除候选人,反之亦然。另请记住:如果系统中的某个位置稍后发送已删除的空缺(反之亦然),则该实体将再次保留。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多对多关联。数据不删除 的相关文章

随机推荐

  • 当锁屏出现时 Android 启动意图

    我正在尝试开发替代锁屏 因为我需要一个意图过滤器来监听屏幕关闭 但问题是我不知道要使用哪个属性以及要给出哪个值 也在做同样的事情 这就是问题 https stackoverflow com questions 10800683 androi
  • 为什么使用 Java 套接字永远无法到达输入流的末尾?

    我正在用 Java 编写一个简单的代理 我无法将整个给定请求读入字节数组 具体来说 在下面的循环中 即使客户端已发送了它将发送的所有数据 即永远不会到达流的末尾 对 read 的调用也会阻塞 由于在读取完整的输入之前我无法确定是否是开始写入
  • 如何让数据对齐到html表格行的顶部

    我有这个 html 表 其中表中有一个单元格rowSpan 3 因此 在第一列中 我有 3 行带有输入 在第二列中 我有一张显示跨越所有 3 列的图片 我试图弄清楚浏览器如何计算出如何为第一列中的每一行垂直分配间距 然后我想变得 紧 这样所
  • 使用本地文件在远程数据库中执行 COPY 命令

    我正在尝试执行 PostgresCOPY命令 COPY warehouse terminal test table FROM C file csv DELIMITERS E t CSV HEADER QUOTE E ESCAPE E NUL
  • 使用 Json.NET 从 Json String 反序列化嵌套 DataSet

    我尝试使用 Json NET 从 JSON 字符串反序列化数据集 Json 字符串包含我想要使用的状态 消息和表 status ok message table column1 value1 column2 value2 column1 v
  • 该网站如何知道我正在打开另一个选项卡?

    当我登录一个网站 这是我大学的 学习系统 时 我发现我无法打开打开同一网站的新选项卡 当我这样做时 该网站不知何故会意识到并显示以下消息 该网站到底如何知道我在计算机上打开了哪些选项卡 据我所知 前端代码不应该访问我的私人浏览器信息 该网站
  • Jquery hasClass + If 语句

    我希望以下 loadContent 函数仅在单击的链接具有特定类时加载目标 div 这是我到目前为止所想出的 function loadContent targetDIV sourceURL if this hasClass done ta
  • 如何清理 TeamCity 中旧的失败构建?

    我们在 TeamCity 中确实有数百个失败的构建 由于旧的失败设置重试 数量特别高 现在浏览历史记录非常痛苦 我只想清理旧的失败构建 TeamCity 中有办法做到这一点吗 正常的清理策略只允许在上次成功构建之前的 X 天进行清理 在 T
  • 执行默认信号处理程序

    我编写了一个应用程序 其中我为 linux 中的不同信号注册了多个信号处理程序 进程接收到信号后 控制权将转移到我注册的信号处理程序 在这个信号处理程序中 我做了一些我需要做的工作 然后我想调用默认信号处理程序 即SIF DFL or SI
  • Bash - 文件意外结束[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在编写 bash 脚本来对程序运行测试 但我似乎无法找到语法错 误 当我使用 x 时 它告诉我它正在等待 但我找不到它 请参
  • 禁用 JSHint 警告:需要赋值或函数调用,但看到的是表达式 [重复]

    这个问题在这里已经有答案了 我有以下几行 imageUrl data imageUrl imageUrl 对于这一行 JSHint 抱怨道 Expected an assignment or function call and instea
  • 在非管理员用户下从远程运行 PS cmdlet - 访问被拒绝

    我正在尝试通过 Invoke Command 远程运行 Get ScheduledTask 该用户是非管理员 但属于 远程管理用户 的一部分 PS 远程处理工作正常 在本地运行命令效果很好 但是通过 Invoke Command 运行它会出
  • FSM actor 在转到相同状态后不会触发 onTransition

    根据Akka FSM 文档 http doc akka io docs akka snapshot scala fsm html 笔记 可以使用 goto S 或stay 实现相同状态转换 当前处于状态 S 时 它们之间的区别在于 goto
  • Osmdroid - 自定义离线图块源更改位置

    我使用此代码来显示离线 Osmdroid 地图图块 问题是 我已将图块存储在位置 sdcard emulated0 0 中 有什么方法可以将它传递到 XYTileSource 中吗 Thx myMapView setTileSource n
  • jQuery iframe 模式关闭表单提交

    我有一个 jQuery 模态对话框 其中包含一个 iframe 该 iframe 包含一个表单 当用户提交表单时 我想关闭模式对话框 我怎样才能做到这一点 index php 上的 jquery 模态脚本
  • 如何修复客户端首选项不接受服务器选择的协议版本 TLS10 [TLS12]

    我想使用 sql server 数据库运行 spring boot 应用程序 但是当我运行它时 出现以下错误 com microsoft sqlserver jdbc SQLServerException The driver could
  • Webstorm 6 - 如何使 scss 文件观察器忽略文件

    我希望 SCSS 文件的文件观察器忽略文件名以下划线开头的文件 例如 buttons scss 我该怎么做呢 首先向您想要忽略的文件添加 完成 来自文档 http sass lang com docs yardoc file SASS RE
  • 尝试设置 Laravel 4 给出“无法打开流:没有这样的文件或目录”

    尝试在 Mac 上设置 Laravel 4 我已经安装了 Composer 但是当我通过 XAMPP 进入公共文件夹时 我得到以下信息 警告 require Applications XAMPP xamppfiles htdocs lara
  • 在 Python 脚本中使用 FFProbe

    我对 python 相当陌生 这是我的第一个真正的项目 我遇到了障碍 我这里有一个 wmv 文件 我使用 FFprobe 从 wmv 文件中提取持续时间 以秒为单位 当我在 CMD 中运行以下命令时 ffprobe i Video2 wmv
  • 多对多关联。数据不删除

    我有这个模型 Entity Table name candidate XmlRootElement name candidate public class Candidate ManyToMany mappedBy candidates f