java - 使用 RequestFactory 和 JPA 删除 OneToMany 中的实体

标签 java gwt jpa requestfactory

我想知道使用 RequestFactory 从 GWT 内的一对多关系中删除子项的正确方法是什么。

我的 GWT 应用程序具有名为产品的实体,并且该产品与专家具有一对多关系:

@Entity
public class Product {
    ... 
    OneToMany(mappedBy="product", orphanRemoval=true,
              cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)
    Set<Expert> experts = new HashSet<Expert>();
    ...
}

@Entity(name = "EXPERT")
public class Expert {
    ...
    @ManyToOne(optional=false)
    Product product;
    ...
}

我有一个用户界面,您可以在其中更改产品的某些值,还有一个可以添加或删除专家的窗口。添加专家很顺利,但如何删除专家呢?我必须在客户端和服务器端进行哪些管理?

我已经打开了一个正在处理的productRequest。

最佳答案

我也回答了您的 JPA 问题。

根据我过去的经验,在 Hibernate 中删除父子双向关系中的子项可能非常棘手。

我通常做的是使用单向映射,即产品不包含专家集。但是您可以实现一个 getter 来获取所有使用 Hibernate 调用的专家。优点是:

  1. 更轻松的映射
  2. 更容易编码
  3. 易于管理的行为

您可以随时返回并在稍后阶段实现缓存或急切获取。大多数时候,它们都是不必要的过早优化。

关于java - 使用 RequestFactory 和 JPA 删除 OneToMany 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921993/

相关文章:

GWT CellList单击以切换选择(多选)

java - 您如何处理和解析 JPA 持久性异常以向用户提供有意义的消息

java - 有没有办法让 Play 框架和 JPA 在列名中使用下划线?

java - 具有全局序列化器 (Kryo) 的 Hazelcast - 没有适合类型的反序列化器

java - 如何为 Android AsyncTask 类建模?

css - 内联 CSS 不适用于添加的小部件

GWT - 具有简单寻呼机问题的单元格

java - 关于hibernate继承映射和Discriminator列,我如何知道对象的类型?

java - php sha1 不等于 java sha1

java - Scala:类中的公共(public)静态最终