我在Web應用程序中使用Spring和Hibernate。我有一個實體如下:如何更新Hibernate中的某些實體字段?
@Entity
public class MyClass{
@Id
@GeneratedValue
protected Long id;
protected String prop1;
protected String prop2;
/*
* Getters And Setters
*/
}
當我要更新這個實體的實例,我用傑克遜如下得到客戶實例:
@Inject
SessionFactory sf;
@RequestMapping("update")
@Transactional
public void update(@RequestBody MyClass myClass){
sf.getCurrentSession.update(myClass);
}
用戶數據如下:
{
"prop1": "my value1",
"prop2": "my value2"
}
這個工作正常。我的問題是當我只想更新prop1
。在這種狀態下,我也必須設置prop2
。如果我不知道,它會將prop2
更新爲null
。
如何才能更新prop
而不發送prop2
從客戶端到服務器?
如果你想有確切的更新查詢控制(即哪些字段應該包含在查詢)將被解僱,使用HQL UPDATE語句。使用session.save/update/merge/saveOrUpdate hibernate會在內部創建查詢,並且您將不會擁有可能需要的細粒度控件。 –
你應該使用spring Data JPA。 http://projects.spring.io/spring-data-jpa/有一些非常好的例子可以讓你所有的CRUD操作變得輕而易舉。 –
[JPA:只更新特定字段]的可能重複(http://stackoverflow.com/questions/27818334/jpa-update-only-specific-fields) –