2015-10-19 64 views
0

Java/Spring/Hibernate/CXF/MySQL SOAP webservice和相應的Web Spring MVC客戶端。使用一個表單進行CRUD操作,對一個表定義爲AUTO_INCREMENT

web服務後面的表格像往常一樣將id設置爲AUTO INCREMENT。

實體PO​​JO映射到表有

@Id @GeneratedValue 
@Column(name="id", unique=true, nullable=false) 
@XmlElement(name="id") 
private long id; 

在Web客戶端模型POJO具有

private long id; 

updateInsert.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<%@ taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 
<html> 
<style> 
.error { 
    color: #ff0000; 
} 
</style> 
<head> 
    <title>Form Template Insert Page</title> 
</head> 
<body> 
    <h1>Form Template Insert page</h1> 
    <form:form modelAttribute="formTemplateInsertUpdateForm" method="post"> 
<!-- <form:errors path="*" cssClass="errorblock" element="div" /> --> 
    <table> 
     <tr> 
     <td><form:label path="id"> id: </form:label></td> 
     <td><form:input path="id" /></td> 
     <td><form:errors path="id" cssClass="error" /></td> 
     </tr> 
     <tr> 
     <td><form:label path="name"> name: </form:label></td> 
     <td><form:input path="name" /></td> 
     <td><form:errors path="name" cssClass="error" /></td> 
     </tr> 
     <tr> 
     <td><form:label path="revision"> revision: </form:label></td> 
     <td><form:input path="revision" /></td> 
     <td><form:errors path="revision" cssClass="error" /></td> 
     </tr> 
     <tr> 
     <td><form:label path="form"> form: </form:label></td> 
     <td><form:input path="form" /></td> 
     <td><form:errors path="form" cssClass="error" /></td> 
     </tr> 
     <tr> 
     <td><input type="submit" value="Insert" /></td> 

      <input value="Insert" name="insert" type="submit" id="btnInsert" class="submit_button"> 
      <input value="Update" name="update" type="submit" id="btnUpdate" class="submit_button"> 
      <input value="Delete" name="delete" type="submit" id="btnDelete" class="submit_button"> 
      <input value="Cancel" name="cancel" type="submit" id="btnCancel" class="submit_button"> 


     </tr> 
    </table> 
    </form:form> 
    <br><strong><c:out value="${aMsg}" /></strong><br> 
</body> 
</html> 

我想用一個模型插入,更新或刪除實體Java實例/表的行。

行的ID被唯一對象將提交/沖洗在該片段從DaoImpl後已知

public FormTemplate insert(FormTemplate formTemplate) 
{ 
    logger.debug("entering"); 

    em.getTransaction().begin(); 
    em.persist(formTemplate); 
    em.getTransaction().commit(); 

    logger.debug("exiting "); 

    return formTemplate; 
} 

問題:當insertUpdate.jsp第一次打開,ID具有一個默認值爲0.所以插入表失敗當然是因爲指定了id的值。

我可以簡單地將Model POJO中的id類型設置爲Long而不是long,並將默認值設置爲null?這聽起來很容易。

或者我必須有一個單獨的插入和UpdateDelete模型POJOs和相應的jsps,後者有一個id字段,前者不是?

更大的問題:控制器的get方法是否可以控制jsp中定義的字段的可見性?例如:調用myWebClient/formTemplate/insert會打開insertUpdate.jsp,但是id字段不顯示?

TIA,

仍然甜菊學習

回答

0

long是一種原始的,從來沒有null。嘗試Long類。