Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 JPA更新记录的一部分,不返回任何错误_Java_Jpa_Sql Update - Fatal编程技术网

Java JPA更新记录的一部分,不返回任何错误

Java JPA更新记录的一部分,不返回任何错误,java,jpa,sql-update,Java,Jpa,Sql Update,我有一个使用JPA的java web应用程序。我的问题看起来很简单,但现在已经困扰了我一天了。 我的数据库中有两个表,Book和Author。 这些表的视图中的两个输入字段的格式相同 奇怪的是,当我更新(mrege())这本书的编辑记录时,作者却没有更新。我已经调试并遵循了netbeans允许的author对象,当我合并()我的新书记录时,只影响book表/对象 这本书是多对一的 作者是一对多的人 控制器 protected void processRequest(HttpServletRequ

我有一个使用JPA的java web应用程序。我的问题看起来很简单,但现在已经困扰了我一天了。 我的数据库中有两个表,Book和Author。 这些表的视图中的两个输入字段的格式相同

奇怪的是,当我更新(mrege())这本书的编辑记录时,作者却没有更新。我已经调试并遵循了netbeans允许的author对象,当我合并()我的新书记录时,只影响book表/对象

这本书是多对一的

作者是一对多的人

控制器

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    try {

        String action = request.getParameter("action");

        if (action != null) {
            List<String> values;
            try {
                values = new ArrayList<>();

                switch (action) {

                    case "save": //                                 Ecompasses Save and Update
                        Book book = null;
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                        Date date;

                        String bookAuthorID = request.getParameter("authorID");
                        String bookID = request.getParameter("bookID");
                        String title = request.getParameter("title");
                        String userEnteredDate = request.getParameter("datePublished");
                        Author author = null;

                        if (bookID.matches("\\d+")) {            // Update

                            book = bookService.find(new Integer(bookID));
                            book.setTitle(title);
                            book.setDatePublished(sdf.parse(userEnteredDate));

                            author = authorService.find(new Integer(bookAuthorID));
                            author.setAuthorFirstName(request.getParameter("authorFirstName"));
                            author.setAuthorLastName(request.getParameter("authorLastName"));
                            book.setAuthorID(author);

                            bookService.edit(book);


                        }
  }

应用级联类型。合并

@JoinColumn(name = "AuthorID", referencedColumnName = "AuthorID")
@ManyToOne(optional = false, cascade=CascadeType.MERGE)
private Author authorID;

应用级联类型。合并

@JoinColumn(name = "AuthorID", referencedColumnName = "AuthorID")
@ManyToOne(optional = false, cascade=CascadeType.MERGE)
private Author authorID;

你应用了级联操作吗?@Ish,这实际上破坏了程序。你说什么破坏了程序?您是否观察到任何错误或特定行为?是否应用了级联操作?@Ish,这实际上破坏了程序。什么意思破坏了程序?您是否观察到任何错误或特定行为?
@JoinColumn(name = "AuthorID", referencedColumnName = "AuthorID")
@ManyToOne(optional = false, cascade=CascadeType.MERGE)
private Author authorID;