多关系无法在 Play 框架的映射表中保存映射的 id

2024-01-04

我正在使用 play2.2.1 并尝试在之间创建 ManyToMany 关系Jobads and 职位类别 models.

My 工作任务.java

package models;

@Entity
public class Jobads extends Model {

    @Id
    public Long id;

    @ManyToOne
    public Employers employer;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "jobads_jobcategories")
    public List<Jobcategories> jobcategory;

    @ManyToOne
    public Joblocations joblocations;

    @Required
    public String jobtype;

    @Required
    public String title;

    @Required
    public String text;

    @Required
    public Long salary;

    @Required
    public String experience;

    @Required
    public String active;

    @Formats.DateTime(pattern="yyyy-MM-dd hh:mm:yy")
    public Date created_time = new Date();

    @Formats.DateTime(pattern="yyyy-MM-dd hh:mm:yy")
    public Date modified_time ;

    @Required
    @Formats.DateTime(pattern="yyyy-MM-dd")
    public Date expire_date ;

    public static Finder<Long,Jobads> find = new Finder<Long,Jobads>(
            Long.class, Jobads.class
    );

    public static Jobads create(Jobads ja) {
        ja.save();  
        ja.saveManyToManyAssociations("jobcategory");    
        return ja; 
    }
}

My view:

<form action="@routes.JobAdController.save()" method="post" onsubmit="return checkEmpty();">
    <div class="row">
        <div class="col-md-6">
            <div class="block">
                <div class="header">
                    <h2>Create A New Job</h2>
                </div>
                <div class="content controls">
                    <div class="form-row">
                        <div class="col-md-3">Employer</div>
                        <div class="col-md-9">
                            <select class="form-control" name="employer.id" id="employer_id">
                                <option value="select">Select Employer</option>
                                @for(emp<-employersList) {
                                    <option value="@emp.id">@emp.company_name</option>
                                }
                            </select>
                        </div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">Category</div>
                        <div class="col-md-9">
                            <select class="form-control" name="jobcategory.id" id="jobcategory_id">
                                <option value="select">Select Job Category</option>
                                @for(jc<-jobcategoryList) {
                                    <option value="@jc.id">@jc.name</option>
                                }
                            </select>
                        </div>
                    </div>   
                    <div class="form-row">
                        <div class="col-md-3">Location</div>
                        <div class="col-md-9">
                            <select class="form-control" name="joblocations.id" id="joblocation_id">
                                <option value="select">Select Job Location</option>
                                @for(jl<-joblocationList) {
                                    <option value="@jl.id">@jl.country,@jl.state,@jl.city</option>
                                }
                            </select>
                        </div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">Job Type</div>
                        <div class="col-md-9">
                            <select class="form-control" name="jobtype" id="jobtype">
                                <option value="select">Select Job Type</option>
                                <option value="parttime">Part Time</option>
                                <option value="fulltime">Full Time</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">Title</div>
                        <div class="col-md-9"><input type="text" class="form-control" placeholder="Title" name="title" required="required"/></div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">Text</div>
                        <div class="col-md-9"><textarea class="form-control" name="text" required="required"></textarea></div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">salary</div>
                        <div class="col-md-9"><input type="text" class="form-control" placeholder="Salary per month"  name="salary" required="required"/></div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">expire date</div>
                        <div class="col-md-9"><input type="date"   class="form-control" placeholder="expiry date" name="expire_date" id="expire_date"  required="required" /></div>
                        <input type="hidden"   class="form-control" placeholder="expiry date" name="exp_date" id="exp_date" />
                    </div>
                    <div class="form-row">
                        <div class="col-md-3">Active</div>
                        <div class="col-md-9">
                            <select class="form-control" name="active" id="active">
                                <option value="active">Active</option>
                                <option value="inactive">Inactive</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-row">
                        <div class="col-md-12">
                            <button type="submit" class="btn btn-default btn-block">Add</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

还有我的控制器:

public class JobAdController extends Controller {
    public static Result save() {

        Form<Jobads> jobadsFormData = jobadsForm.bindFromRequest();
        if (jobadsFormData.hasErrors()) {
            System.out.println("Error in form");
            return badRequest();
        } else {
            Jobads.create(jobadsFormData.get());
            return redirect(controllers.routes.JobAdController.index());
        }
    }
}

我在 Jobcategory 模型中没有 Jobad 变量,因为我在那里不需要它。因此创建了一个默认表,名为工作广告_工作类别。我的问题是,当我尝试在 jobads 表中插入数据时,它已完美插入,但映射 ID 未保存在工作广告_工作类别 table.


我的工作类别列表是空的,感谢rtruszk帮助我。 Play 无法将请求中的多值变量绑定到模型多列表变量(我仍在尝试弄清楚为什么 play 会这样做)

为了解决这个问题,我更改了表单方法,从控制器中的 url 获取多值变量的值,然后创建一个新列表并将其添加到我的表单变量中。它是可选的,但我添加了 getter 和 setter 并更改了我的列表名称。下面给出的代码

For GET request

public static Result save() {

    List<Long> jobCatList = new ArrayList<Long>();
    final Set<Map.Entry<String, String[]>> entries = request().queryString().entrySet();
    for (Map.Entry<String, String[]> entry : entries) {
        final String key = entry.getKey();
        final String value = Arrays.toString(entry.getValue());
        System.out.println(key + " " + value);
        if (key.equalsIgnoreCase("jobcategories.id")) {
            String val = value;
            val = val.replace("[", "");
            val = val.replace("]", "");
            String[] a = val.split(",");
            for (int i = 0; i < a.length; i++) {
                jobCatList.add(Long.parseLong(a[i].trim()));
            }
        }
    }
    List<Jobcategories> jobCatObList = new ArrayList<Jobcategories>();
    for (Long id : jobCatList) {
        System.out.println("Id are:" + id);
        jobCatObList.add(Jobcategories.findById(id));
    }
    System.out.println(request().getQueryString("jobcategories.id"));
    Form<Jobads> jobadsFormData = jobadsForm.bindFromRequest();
    System.out.println("\nCategory Form are:" + (jobadsFormData.get()).getJobcategories());
   (jobadsFormData.get()).setJobcategories(jobCatObList);
    if (jobadsFormData.hasErrors()) {
        return badRequest();
    } else {
        Jobads.create(jobadsFormData.get());
        return redirect(controllers.routes.JobAdController.index());
    }
}

OR

For POST要求

public static Result save() {

        Form<Jobads> jobadsFormData = jobadForm.bindFromRequest();

        Map<String, String[]> formUrlEncoded = request().body().asFormUrlEncoded();

        List<Jobcategories> fa = new ArrayList<Jobcategories>();


        for (String key : formUrlEncoded.keySet()) {
            String[] values = formUrlEncoded.get(key);
            for (String val : values) {
                if ("jobcategories.id".equals(key)) fa.add(Jobcategories.findById(Long.valueOf(val)));

            }
        }

            if (jobadsFormData.hasErrors()) {
            return badRequest();
        } else {
            (jobadsFormData.get()).setJobcategories(fa);

            Jobads.create(jobadsFormData.get());
            return redirect();

        }
    }

我知道这种方法不是保存多对多关系的正确方法,但我没有任何其他选择来解决我的问题。

如果有人有更好的解决方案,请发布它,因为我已经尝试了好几天并且已经取得了这么多成就。

为什么玩不能够映射或保存多对多关系?

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

多关系无法在 Play 框架的映射表中保存映射的 id 的相关文章

  • 在 Play 框架中使用缓存

    我正在尝试实现一个测验应用程序 该应用程序使用 ajax 将问题一一加载 当用户单击 到下一个问题 按钮时 他 她的答案将保存在缓存中 但是当我调试时 缓存列表始终为空 此代码创建第一个缓存数组 public static void vie
  • Play框架2.5.0 Websockets示例[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 播放框架 2 5 0 Websockets 示例 在 play 2 5 0 websockets 代码
  • 玩框架。无需编译

    我被介绍到 Play 框架 我发现它的令人惊奇的事情之一是不需要编译项目 您只需保存编辑的文件并重新加载网页即可 我听说 Java 源代码被编译为字节码 然后使用 JIT 编译器进行编译 那么 Play 框架内部到底有什么魔力呢 在 DEV
  • 关于使用 playframework 实现购物车的建议

    我正在学习使用playframework通过编写代码来实现webstore用于销售物品 我已经实施了Admin区域使用crud and secure模块 现在 我想创建一个shopping cart用户可以向其中添加商品并继续结账 我对电子
  • 使用MongoDB时需要JPA吗?

    我对这两者很困惑 我正在看戏 java框架 它说它使用JPA 我正在考虑使用 Play 第一次在项目中使用 MongoDB 我以前使用过JPA 但当时我用它来写入关系数据库 mysql MongoDB 不是关系数据库 所以如果我想将它与 P
  • 创建通用 Json 序列化函数

    是否可以使用 Play Framework 2 2 在 Scala 中创建一个通用函数 将任意对象序列化为 JSON 而无需提供编写器或格式化程序 例如 此非通用代码将创建给定客户的 JSON 响应 import play api libs
  • EF Core 5.0 中的多对多关系是否可以配置为仅保留一个导航属性(在一侧)?

    我已使用以下代码配置了 DbContext EF Core 5 0 protected override void OnModelCreating ModelBuilder modelBuilder modelBuilder Entity
  • 在 Play 框架规范中设置 PhantomJSDriver 上的 Accept-Language

    如何使用 Play Framework 2 2 规范中的特定 Accept Language 语言标头配置 PhantomJSDriver 鉴于此代码 import org specs2 mutable import org specs2
  • 在 Products.scala 中找不到 flash

    我目前正在阅读 Peter Hilton 的 Play for Scala 我刚刚结束了第一个示例 Play 应用程序 您可以在其中构建回形针目录 然而 在编译时 我收到一个编译错误 告诉我尚未找到值 flash 通常这是我犯的一个简单错误
  • 对于基于 Play 2.0 的 Java 应用程序,我可以使用 groovy 模板代替 scala 吗?

    我是 Play 2 0 新手 我很难理解用于创建视图的 scala 模板 我可以切换回 groovy 因为它存在于早期版本的 Play 框架中 例如 播放 1 2 播放 1 2 4 是的 有一个可用于 groovy 的模块 https gi
  • Play 框架 2.0:在 Http.Context 中存储值

    我正在尝试在 Play 框架中的 scalaquery 中实现 基于请求 的会话 我使用 scalaquery 创建一个会话 并尝试将其存储在当前的 http 上下文中 如下所示 def withTransaction A bp BodyP
  • 用于真实 Web 项目的 Scala-JS [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人用过吗Scala JS在真实的网络项目中 但不仅仅适用于普通的JavaScript在隔离环境中替换 我想尽可能多地使用 Scala 我希望可
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • 清理 IntelliJ 中构建的 Play 框架

    我有一个拼写错误conf routes文件导致 Play Framework 生成错误命名的类 重建项目并运行Invalidate Caches并没有解决 IntelliJ 中的问题 当我手动运行时重新生成了不正确的类文件play clea
  • Play 框架:从 Build.sbt 读取版本

    我看到了很多关于如何从 build sbt 读取版本的问题 并且已经提供了很多解决方法来解决如何将 build sbt 指向 conf application conf 并在中指定版本改为conf application conf 我有一个
  • 续集打字稿多对多关系模型数据

    我正在使用sequelize续集打字稿 https github com RobinBuschmann sequelize typescript图书馆 并试图实现以下关系 Team ts Scopes withPlayers include
  • Play框架2.3.x服务器错误无法注册类

    我最近在服务器上上传了 Play 应用程序 问题是我可以通过命令运行应用程序激活器运行它编译并运行良好 当我尝试做的时候活化剂洁净阶段它也编译但之后目标 通用 阶段 bin name of myapp它会抛出一个错误 例如 Oops can
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • EF5 和循环或多级联路径,FOREIGN KEY

    我遇到了一个奇怪的问题 我已经知道为什么通常会发生此异常 以及如何通过在其中一个属性中将 WillCascadeOnDelete 禁用为 False 来解决它 但我的问题似乎是其他类型的 这是我的代码 会员 public class Mem
  • 在游戏框架中编写功能测试的正确方法

    在为基于 play1 2 4 的 web 应用程序编写功能测试时 我对如何正确编码感到有点困惑 困惑在于所涉及的事务边界 我在某处读到每个测试都有自己的事务 在我的应用程序中 用户可以登录并向购物车添加一些商品 然后他可以提供一个地址 以便

随机推荐

  • sRGB 和 Adob​​eRGB 的数学转换

    这是一个非常明确的问题 但我做了很多研究 但没有找到答案 StackOverflow 问题为this https stackoverflow com questions 1174832 converting jpeg colorspace
  • 使用 python 进行拉丁超立方采样

    我想对由多个维度 2 3 4 的函数定义的分布进行采样 f x y 分布可能很丑陋 不标准 例如数据上的 3D 样条 高斯总和等 为此 我想对 2 4 维空间进行均匀采样 然后使用额外的随机数接受或拒绝空间的给定点进入我的样本 有没有现成的
  • java swing - 如何更改窗口背景

    我试图制作一个将窗口背景从默认切换为红色的按钮 我没有找到任何预设颜色来匹配默认颜色 所以我尝试从中获取它panel getBackground当我创建它时 我有一个错误line 11 我不知道如何检查当前的背景颜色 JPanel pane
  • FileSystemWatcher 无法访问文件,因为在其他进程中使用

    我正在编写一个 FileSystemWatcher 每当图像上传到文件夹 A 时 它就会将图像从文件夹 A 复制到文件夹 B 我试图将其用作服务器 PC 上的 Windows 服务 但我遇到了一些问题我的文件在复制时被锁定 我想我已经找到了
  • 在 Eclipse 中重新构建已删除的类文件

    我不小心删除了项目中的 class Java 字节码 文件 在文件系统上 而不是使用 Eclipse 本身 很容易修复 对吧 只需重新构建它即可 但这行不通 即使我从 项目 菜单中选择 构建项目 或 构建全部 或 自动构建 文件系统上实际上
  • 解码器的输出表面如何传递到编码器的输入表面?

    我试图了解表面到表面的方法如何与 MediaCodec 配合使用 在仅使用 ByteBuffer 的方法中 解码后的数据放置在 OutputBuffer 中 这些非编码数据可以手动处理 然后传递到编码器的输入缓冲区 如果我们看一个 Andr
  • 关于互相关和相关系数的一个问题[重复]

    这个问题在这里已经有答案了 可能的重复 Matlab互相关与相关系数问题 https stackoverflow com questions 6281864 matlab cross correlation vs correlation c
  • 如何正确使用 cURL 定义基本 HTTP 身份验证?

    我正在学习敏捷性 Apigility 文档 gt REST 服务教程 https www apigility org documentation intro first rest service 并尝试通过 cURL 发送带有基本身份验证的
  • 允许从任何计算机访问 Postgresql

    在研究了 Postgresql 的 GUI 之后 我发现 pgadmin 4 桌面客户端是一个有效的选择 我使用 Ubuntu 16 04 服务器 Digital Ocean 上的 Droplet 和 iptables 防火墙 如何允许远程
  • 如何在 MIPS 中正确使用 mod 运算符?

    在 MIPS 中 我对如何让 mod 工作感到困惑 下面是我迄今为止提出的代码 除了 mod 之外 我可能还有更多错误 但我觉得这些错误是 mod 误解的结果 我想做的就是在这里获取工作代码 python i 1 k 0 while i l
  • 文本区域内容有时不包含在 $_POST 数组中,但有时包含在 $_POST 数组中。

    我一直在为自己的网站开发自己的 CMS 只是为了测试 PHP 不管怎样 一切都工作正常 然后突然间我在输入文章内容时遇到了这个问题 我使用 JQuery markItUp 插件进行文本编辑 它正在工作 然后突然主文章无法进入数据库 表格如下
  • Android Rooms - 在字符串中搜索

    在 Android Rooms 持久性库中 如何将以下 SQL 语句编写为 Query SELECT FROM table WHERE field LIKE value 该语法无效 我在文档中找不到任何有关它的信息 您可以使用 SQLite
  • 推送到达时显示警报

    当来自 C2DM 或 GCM 的推送通知到达时 如何显示警报 现在我正在状态栏上显示通知 那么我怎样才能收到通知作为警报 在用户正在做的事情中间弹出一个对话框是一种对用户非常敌意的行为 如果他们正在玩 愤怒的小鸟 而你破坏了他们的拍摄怎么办
  • 批处理:从动态数组中解析出文件路径[重复]

    这个问题在这里已经有答案了 寻找从特定点解析出路径 然后使用它来填充动态数组 Example Folder tree C Main folder1 C Main folder2 folder2 1 C Main folder3 folder
  • 使用“python -m pip”而不是“pip”有什么效果? [复制]

    这个问题在这里已经有答案了 当我使用python m pip install
  • 不调用复制构造函数[重复]

    这个问题在这里已经有答案了 考虑给定的代码 struct ABC ABC std cout lt lt Calling from default constructor ABC const ABC copy std cout lt lt C
  • 使用 std::bitset 进行双重表示

    在我的应用程序中 我试图显示双变量的位表示 它适用于较小的双变量 不适用于 10 30 级别 Code include
  • 在Eclipse中,如何从使用“android库项目”的项目源快速访问它的源?

    项目A是我工作区中的一个android库项目 通过项目属性 gt android gt 库 是库 项目 A 声明 classA 项目 B 使用项目 A 通过项目属性 gt android gt 库 添加 Project B instanti
  • use_for_lated_fields 在 Django 中如何工作?

    我无法从文档中理解这一点 我完全不清楚 更具体地说 这是一个全局设置吗 因此 如果我在其中一个模型管理器上指定此属性 它是否会被所有模型类全局使用 如果不是全局设置 那么哪些关系到底会受到影响 是否可以让一名模特经理负责一种关系 而另一名模
  • 多关系无法在 Play 框架的映射表中保存映射的 id

    我正在使用 play2 2 1 并尝试在之间创建 ManyToMany 关系Jobads and 职位类别 models My 工作任务 java package models Entity public class Jobads exte