Java 强制ebean更新对象

Java 强制ebean更新对象,java,playframework-2.0,ebean,Java,Playframework 2.0,Ebean,我有一个播放框架2应用程序 我使用用Scala 2.10.3(运行Java 1.7.0_25)构建的play 2.2.2 我有一个方法可以检查对象和他从安全表中的副本。如果对象已更改,则将使用安全表中的对象替换该对象。 但当我调用save ebean时,它不会更新: [调试]c.a.e.s.p.DefaultPersister-跳过更新,因为bean未更改 publicstatict findandstore(类clazz,长id)引发异常{ T securedObject=SecuredEnt

我有一个播放框架2应用程序
我使用用Scala 2.10.3(运行Java 1.7.0_25)构建的play 2.2.2

我有一个方法可以检查对象和他从安全表中的副本。如果对象已更改,则将使用安全表中的对象替换该对象。 但当我调用save ebean时,它不会更新: [调试]c.a.e.s.p.DefaultPersister-跳过更新,因为bean未更改

publicstatict findandstore(类clazz,长id)引发异常{
T securedObject=SecuredEntityUtils.getObjectFromSecuredTable(clazz,id);
T entity=Ebean.find(clazz,id);
if(securedObject!=null){
if(实体==null){
Ebean.save(securedObject);
}如果(!entity.equals(securedObject))为else{
更新(securedObject);
}
}否则{
logger.warn(“未找到实体的securedObject:+entity.getClass());
}
返回securedObject;
}

有没有办法强制ebean保存/更新整个对象?

我可能错了,但ebean没有将实体标记为脏实体,因为您没有对其调用任何setter。也许使用
Ebean.markAsDirty(entity)
可以解决您的问题(我知道这是一个很老的问题,但因为我偶然发现了它,也许我的答案可以帮助某人)

我可能错了,但Ebean没有将该实体标记为dirty,因为您没有调用任何setter。也许使用
Ebean.markAsDirty(entity)
可以解决您的问题(我知道这是一个很老的问题,但因为我偶然发现了它,也许我的答案可以帮助某人)@RenaudHumbert Labeaumaz您应该在这里发布您的答案,而不是发表评论。它解决了我的问题。完成了,我很高兴它帮助了你!
public static <T> T findAndRestore(Class<T> clazz, Long id) throws Exception {
    T securedObject = SecuredEntityUtils.getObjectFromSecuredTable(clazz, id);
    T entity = Ebean.find(clazz, id);
    if (securedObject != null) {
        if (entity == null) {
            Ebean.save(securedObject);
        } else if (!entity.equals(securedObject)) {
            Ebean.update(securedObject);
        }
    } else {
        logger.warn("Not found securedObject for entity : " + entity.getClass());
    }
    return securedObject ;
}