2014-10-30 5 views
0

을 사용하는 방법 2.2.1 ebean :playframework 내가 프레임 워크 & ebean 을 재생하려면 새로운 오전 그리고 그래서 난 다음 코드를 사용 내 모델의 인스턴스를 업데이트하는 기능 util을 공통을 원하는 자바 원기 회복 업데이트 엔티티

private static void updateEntity(Class cls, Long id, ObjectNode data){ 
    Object instance = Ebean.find(cls,id); 

    for (Field field :cls.getFields()){ 
     String fieldName = field.getName(); 
     if (!fieldName.equals("id")){ 
      field.setAccessible(true); 
      try { 
       field.set(instance, data.get(fieldName).toString()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    try { 
     //not work 
     cls.getMethod("save").invoke(instance); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
     e.printStackTrace(); 
    } 
    //not work too 
    //Ebean.save(instance); 

} 

Long id = 1L; 
    Class cls = MyEntity.class; 
    ObjectNode data = Json.newObject(); 
    data.put("name","Hello world"); 
    data.put("id",1L); 
    updateEntity(cls,id,data); 

MyEntity 그래서 ID와 이름 , 내가 다음에 어떻게해야합니까 포함 모델의 nomarl 엔티티 클래스입니다 : 내가 사용하여 전화를?

답변

0
private static void updateEntity(Class cls, Long id, ObjectNode data){ 

User user = Ebean.find(cls,id);  // For example, consider Ebean returns 'User' object. You can mention your Model here. 

try{ 
    user.getClass().getDeclaredField("id").set(user, data.get("id").toString()); 
} 
catch(NoSuchFieldException exception){ 
    exception.printStackTrace(); // If no field is found in the name of `id`. 
} 
catch(NullPointerException exception){ 
    exception.printStackTrace(); // If field name is null 
} 
catch(Exception exception){ 
    exception.printStackTrace(); 
} 

user.save(); 
} 
+0

당신은 내 뜻을 이해하지 못합니다. 사용자 클래스, 제품 클래스 등 모든 모델을 동적으로 업데이트하고 싶습니다. 특정 클래스를 사용할 수 없으며, 모델 클래스는 괜찮습니다. 또한 나는 set 메소드에서 키가 있다고 생각하고 객체의 속성을 변경하지만이 함수가 끝난 후에는 데이터베이스의 데이터가 변경되지 않는다 – caogy

+0

자바 리플렉션 메서드는 Ebean ORM에서 작동하지 않을 수도 있습니다. 우리가 데이터베이스의 가치를 바꾸기 위해 모르는 뭔가 – caogy