0
我想爲我的Play實現一個RESTful接口!使用通用包裝器的框架模型。Play的通用包裝方法!模型
我想使用泛型方法來調用並返回每個模型各自的「查找」方法。
private static <T extends GenericModel> void getModel(T model, Params params){
if (params._contains("id")){
renderJSON(model.findById(params.get("id", Long.class)));
}
else{
renderJSON(model.findAll());
}
}
上述方法被稱爲如下,在根據我的控制器的GET方法,其模型通過一特定的路線請求:
getModel(new User(), params);
由於查找()方法實際上是GenericModels類的靜態方法,它應該完全有可能。然而,由於發揮每個定義的模型生成的代碼我得到這個錯誤:
UnsupportedOperationException異常發生:請@ javax.persistence.Entity註解註釋的JPA模型。
至少,我認爲這是原因。有沒有辦法解決這個問題?我是否被迫爲每個類實施相同的GET,PUT,UPDATE,DELETE方法?
JPQL似乎扔同樣的錯誤。看來,使用泛型時,模型的Play代碼根本無法訪問。無論如何感謝您的答案。儘管使用通用包裝器/方法會更優雅,但似乎具體是唯一的出路。 – sw00
基本上,模型字節碼在運行時增強,並且GenericModel.findById函數被YourClass級別的新字符替換。因爲它是靜態的,並且靜態函數不是「可覆蓋」的,所以它肯定會調用它在GenericModel中編譯時可以找到的那個:(...對不起,如果我的解決方案不好;)! – mandubian
它似乎是框架的限制,而不是你的代碼。所以不用擔心。 – sw00