Jpa EclipseLink避免收集保留/删除

Jpa EclipseLink避免收集保留/删除,jpa,eclipselink,Jpa,Eclipselink,我正在使用EclipseLink,我想知道在更新或创建实体时是否有办法避免对实体集合执行JPA操作。我有一个具有以下集合的实体: @OneToMany(mappedBy = "pageItemAssignment") private Collection<AllowedUrl> allowedUrls; 当我更新父实体时,从集合中添加或删除的任何内容都将具有jpa persist/remove操作。我不想发生这种事。我只希望在检索父实体且忽略所有其他操作时填充集合。我将有代码来保存

我正在使用EclipseLink,我想知道在更新或创建实体时是否有办法避免对实体集合执行JPA操作。我有一个具有以下集合的实体:

@OneToMany(mappedBy = "pageItemAssignment")
private Collection<AllowedUrl> allowedUrls;
当我更新父实体时,从集合中添加或删除的任何内容都将具有jpa persist/remove操作。我不想发生这种事。我只希望在检索父实体且忽略所有其他操作时填充集合。我将有代码来保存/更新/删除集合中的实体

是否有可以在关系上配置以忽略操作的配置


谢谢。

据我所知,您不想将某些字段状态保留到DB。您可以使用注解@Transient

瞬态实体字段是不参与持久性的字段,其值从不存储在数据库中

@Entity
public class MyEntity  {
     ....
    @Transient 
     String url; // not persistent because of @Transient
} 

我想我走错了方向。我的新集合项上的自动持久化将使集合项没有id值。我想通过避免这个过程来控制保存/更新


相反,我选择刷新父实体,以便刷新集合,以便在持久化后每个新集合都有一个id。现在我需要编写的唯一代码是更新,因为这是唯一没有自动触发的东西。

假设数据库中已经有实体,您可以通过将给定字段定义为只读来避免刷新内存更改。在您的特定情况下,这可能如下所示:

@OneToNameAppedby=pageItemAssignment//关系的非拥有方 允许私人收藏网址; @许多人//关系的拥有方 @JoinColumninsertable=false,Updateable=false//只读字段 专用pageItemAssignment pageItemAssignment; 这将阻止JPA提供程序执行任何操作,除了从数据库读取关系,FK将不会被插入,但其他字段将被插入。
这种方法适用于以下注释:@Column、@OrderColumn、@JoinColumn、@MapKeyColumn和@MapKeyJoinColumn。

这是一个我需要从数据库中提取的集合,因此@Transient在这里不起作用。我在发布我的问题之前已经尝试过了。父实体更新仍将尝试在集合中持久化对象。将insertable设置为false将忽略外键的值,并尝试在表中创建包含所有其他字段的行。这当然会因为外键验证而失败。