私は、次のエンティティが、私はJPAの春のプロジェクトはJPA春に必要な型「java.lang.Integerの」に「はjava.lang.String型」タイプの値を変換するのに失敗しました
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
}
にH2を通じて持続していこの
<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>
このように新しいデータを入力するフォームをHTMLページを持っていることは、コントローラからの投稿を取り扱うだ方法である
@PostMapping("/product")
public String saveOrUpdateProduct(Product product){
productService.saveOrUpdate(product);
return "redirect:/product/"+product.getId();
}
そして、これは私がフォームをHTMLページに移動し、私は失敗しました
を持って提出しようとすると、データベース
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; }
との相互作用を扱うautowiredサービスクラスでするsaveOrUpdateメソッドであります型 'java.lang.String'の値を必須型 'java.lang.Integer'に変換します。 ネストされた例外はjava.lang.NumberFormatExceptionです:入力文字列の場合: "ヌル"
あなたはこれが新しいデータ用だと言っていますが、正しいですか?もしそうなら、*なぜ*あなたは 'id'の隠された入力を持っていますか? – Powerlord
@Powerlordは保存または更新を望んでいるので、 – Ele
この入力には正確に何が入力されますか: ''私は、 'id'がコントローラからテンプレートに渡されるときにnullになると思われます。 – tsolakp