我想知道是否有可能使用域對象構建jpa查詢。使用域對象的JPA查詢Spring mvc jpa rest
例如:
@Entity
public class User {
private String firstname;
private String lastname;
private String email;
}
在實際的對象有更多的領域。我收到此對象的有效json字符串。但並不是所有的領域都被填補。
比如我只得到填補姓:
{"firstname":"Peter","lastname":"","email":""}
這JSON被反序列化到用戶對象
現在我想使只使用與接收的參數對象的搜索。結果應該是Peter的所有用戶。
問題是可以只給查詢的對象?
感謝輸入
編輯1
感謝您的幫助,直到現在。我找到了使用實體搜索合同的解決方案。在這個解決方案中,我發佈了一些合同和其他方法的更新值。
的JSON現在這個樣子:
contract = {fromDate:moment($('#datepickerVon').val(), 'DD-MM-YYYY').format('DD-MM-YYYY'), endDate:moment($('#datepickerVon').val(), 'DD-MM-YYYY').format('DD-MM-YYYY'), Season: {
season: "SO14"}, name: {name: "peter"}, category:{category:"SomeString"}};
console.log(contract);
$.ajax({
url:'/contracts/search/',
dataType: "json",
type: "POST",
mimeType: 'application/json',
contentType: "application/json",
data: JSON.stringify(contract),
success: function(data) {
console.log(data);
}
});
控制器接收這樣的:
@RequestMapping(value = "/search/", method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> getVertagFromSearch(@RequestBody String json, UriComponentsBuilder uriBuilder){
Contract contract = contract.fromJsonToContract(json);
List<Contract> contractList = Contract.findAllContractsPerContract(contract);
return new ResponseEntity<String>(Contract.toJsonArray(contractList), headers, HttpStatus.OK);
}
反序列化是在這裏:
public static contract fromJsonToContract(String json) {
return new JSONDeserializer<Contract>().use(Calendar.class, new CalendarTransformer("dd-MM-yyyy HH:mm")).use(null, Contract.class).deserialize(json);
}
而且這裏的交易方法。
@Transactional
public static List<Contract> findAllContractsPerContract(Contract contract) {
EntityManager e = entityManager().getEntityManagerFactory().createEntityManager();
Session session = e.unwrap(Session.class);
Example contractExample = Example.create(contract);
Criteria c = session.createCriteria(Contract.class).add(contractExample);
List<Contract> list = c.list();
return list;
}
用這個例子我得到了結果。現在的問題是,是否有可能添加一些標準的SQL像「大或小」或「喜歡」。因爲目前看起來所有的標準都是用「等於」來搜索的。
謝謝
查看Hibernate示例http://java.dzone.com/articles/hibernate-query-example-qbe。在JPA – geoand