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