ich die folgende Einheit habe durch h2 in einem PPV Frühjahr Projekt beharrenIn JPA Feder erforderlich Typen ‚java.lang.Integer‘ konvertieren Werte vom Typ ‚java.lang.String‘ fehlgeschlagen
public class Product implements DomainObject{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Version
private Integer version;
private String description;
private BigDecimal price;
private String imageUrl;
public Product() {
}
// getters and setters
}
I eine HTML-Seite mit einem Formular, um neue Daten wie diese
<form class="form-horizontal" th:object="${product}"
th:action="@{/product}" method="post">
<input type="hidden" th:field="*{id}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Price:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{price}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Image Url:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{imageUrl}"/>
</div>
</div>
<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</form>
zu betreten ist dies die Methode, die die Post von der Steuerung
@PostMapping("/product")
public String saveOrUpdateProduct(Product product){
productService.saveOrUpdate(product);
return "redirect:/product/"+product.getId();
}
FAHRVERHALTEN
Und das ist die saveOrUpdate Methode in der autowired Service-Klasse, die Interaktion mit der Datenbank
private EntityManagerFactory emf;
@PersistenceUnit
public void setEmf(EntityManagerFactory emf) {
this.emf = emf;
}
@Override
public Product saveOrUpdate(Product domainObject) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Product savedProduct = em.merge(domainObject);
em.getTransaction().commit();
return savedProduct;
}
Als ich mit dem Formular auf die HTML-Seite gehen Griffe und ich versuche ich einreichen
fehlgeschlagen um den Wert des Typs 'java.lang.String' in den erforderlichen Typ 'java.lang.Integer' zu konvertieren; verschachtelte Ausnahme ist java.lang.NumberFormatException: Für Eingabestring: "null"
Sie sagten, dies ist für neue Daten, richtig? Wenn ja, warum hast du eine versteckte Eingabe für die ID? – Powerlord
@Powerlord weil er speichern oder aktualisieren will – Ele
Was genau für diesen Eingang gestellt bekommt: ''. Ich vermute, dass "id" null ist, wenn es vom Controller an Ihre Vorlage übergeben wird. – tsolakp