我不确定在RequestFactory
中处理收集/查找表/的最佳做法是什么。
例如,如果我有两个Domain对象:
@Entity
public class Experiment {
private Long id;
private String name;
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE})
private UnitOfMeasure unitOfMeasure;
public Experiment() { }
public String getName() {
return name;
}
public Long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public UnitOfMeasure getUnitOfMeasure() {
return unitOfMeasure;
}
public void setUnitOfMeasure(UnitOfMeasure unitOfMeasure) {
this.unitOfMeasure = unitOfMeasure;
}
}
@Entity
public class UnitOfMeasure {
private Long id;
private String unit_type;
public UnitOfMeasure() { }
public String getUnitType() {
return unit_type;
}
public Long getId() {
return id;
}
public void setUnitType(String unitType) {
this.unit_type = unitType;
}
}
这是使用Experiment
表中的ForeignKey在UnitOfMeasure
和Experiment
之间的正常单向1:n实现。
我有不同数量的UnitOfMeasure
个实例,这些实例通常不会发生变化。
web-app提供了一个视图,用户可以在其中更改Experiment
实例的某些属性。该视图使用Editor framework
。要更改特定UnitOfMeasure
的{{1}},请使用Experiment
并呈现ValueListBox
属性。
因为可用的unit_type
实例列表是静态的,所以我使用UnitOfMeasure
来创建一个json字符串,我将其放入HTML主页并在应用程序启动时解析它(对于所有其他集合也是如此)像表值一样)并将它们存储在我传递给`setAcceptableValues``的Singleton类实例(AutoBeanFactory
)中。
目前我从AppData
派生UnitOfMeasureProxy
,但为了使用EntityProxy
对其进行解码/编码,我必须使用AutoBeanFactory
注释工厂。我不知何故怀疑EntityProxyCategory
更适合。{
但是,当我更改特定ValueProxy
的{{1}}时,ValueProxy
通过网络传输整个UnitOfMeasure
实例。
但是,从数据库的角度来看,只需要更改Experiment
表中外键的值。
那么对于像表和子值这样的集合,最佳做法(ValueProxy
vs Experiment
)是什么?
答案 0 :(得分:1)
在许多情况下,对其他实体的引用最好使用它们的ID而不是EntityProxy
本身建模(这是有争议的,但我认为对于服务器端代码也是如此,或者实际上任何跨越单位的代码工作边界-JPA EntityManager生命周期,Hibernate会话等.-)
ValueProxy
的列表(请参阅issue 6961),请确保使用GWT 2.5.0-rc1