gpt4 book ai didi

java - GWT >2.4 RequestFactory 不保存子对象更改

转载 作者:行者123 更新时间:2023-12-01 12:53:37 25 4
gpt4 key购买 nike

我有一个项目已经在 GWT 2.4 上运行了一段时间(以及之前的 2.0 等)。当我将其切换到 GWT 2.5 或 2.6 时,附加到我的主实体的子对象不再保存对它们所做的更改。我没有更改任何代码,但是在 2.4 和 2.6 之间切换,它就崩溃了。我相信更改不会发送到服务器。我正在查看 POST 数据,它似乎不完整,缺少我在 v2.4 上看到的发送的更改。

RequestFactory 从 2.4 到 2.5 的变化是否会导致这种情况?我构建它的方式中有什么设计不正确的吗?感谢您的任何反馈!

这是一个示例检索/更新模式:

// Retrieve object from server
MyEntityRequest request = App.getRequestFactory().myEntityRequest();
MyEntityProxy myEntity;
request.get(id).with("child").fire(new Receiver<MyEntityProxy>() {
@Override
public void onSuccess(MyEntityProxy response) {
request = App.getRequestFactory().myEntityRequest();
myEntity = response;
}
});

// Edits made client side..

// Save updated object
myEntity = request.edit(myEntity);
myEntity.childEntity.setName("new value");
request.save(myEntity).fire(new Receiver<MyEntityProxy>() {
@Override
public void onSuccess(Void) { }
});

请求接口(interface)示例:

@Service(value = MyEntityDao.class, locator = DaoLocator.class)
public interface MyEntityRequest extends RequestContext {
Request<Void> save(MyEntityProxy entity);
}

域对象:

@ProxyFor(MyEntity.class, locator=DomainObjectLocator.class)
public interface MyEntityProxy extends EntityProxy {
Integer getId();
Set<ChildProxy> getChildren();
void setChildren(Set<ChildProxy> children);
}

@ProxyFor(Child.class, locator=DomainObjectLocator.class)
public interface ChildProxy extends EntityProxy {
Integer getId();
String getName();
void setName(String name);
}

服务器对象:

@Entity
@Table (name="MyEntity")
@BatchSize(size=25)
public class MyEntity extends DomainObject {
@OneToMany (mappedBy = "myEntity")
@BatchSize(size=25)
@Cascade(CascadeType.ALL)
private Set<Child> children;
}

服务器持久化:

public static Void save(MyEntity myEntity) {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

try {
myEntity = (MyEntity) session.merge(myEntity);
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
session.getTransaction().commit();
}
}

最佳答案

这可能与https://code.google.com/p/google-web-toolkit/issues/detail?id=7827有关

TL;DR:是的,2.5 中有一些变化。

关于java - GWT >2.4 RequestFactory 不保存子对象更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24041553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com