让我的EventListeners触发@ElementCollection属性的诀窍是什么?

mav*_*ick 9 java spring hibernate jpa-2.0

我已经完成了我的JPA事件(postUpdate),当我更新我的实体上的属性时,它们正在触发,除了映射为@ElementCollection的属性.

这是限制吗?配置选项?

这是我的实体的一部分

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Pckg {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false, length = 100)
    private String title;

    @ElementCollection
    @CollectionTable (
        name = "PckDest",
        joinColumns = @JoinColumn(name = "package_id", nullable = false)
    )
    @Column(name = "destination", nullable = false, length = 150) 
    private List<String> destinations;
    ...
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我更改"标题",我的听众会收到更改,但是当我更改"目标"时不会发生相同的变化

我通过spring(3.1)使用JPA和hibernate(4.0)作为提供者

谢谢

min*_*nus 1

所有者端(Pck 表)不进行更新,更新的是保存集合数据的表(PckDest)。

我认为甚至可以争论的是,更改集合的内容可以被视为更新,因为它可以并且通常会被实现为删除和插入。

我认为您必须在实体管理生命周期之外处理此类行为,或者在所有者实体内部拥有某种字段,该字段会在列表更改时更新(例如某种校验和),这样当您更改列表时,父实体也会更新必须更新(尽管我不知道这是否是一个好主意)。