Tengo permisos de @ElementCollection Map<User, Long> permissions en una clase.
@ElementCollection @CollectionTable(name = "als_permission", joinColumns = @JoinColumn(name = "File")) @MapKeyJoinColumn(name = "User") @Column(name = "Permission") @JsonIgnore private Map<User, Integer> permissions = new HashMap<>(); Hice algunos cambios solo en esa colección e repo.save(entity) . Veo que el registro se actualiza, pero mi controlador @PostUpdate que está definido en @EntityListeners no parece ser llamado.
¿Hay algo que tenga que poner para indicarlo? Estoy pensando que podría necesitar algún tipo de cascade en alguna parte.
Respuesta corta: No.
Tuve el mismo problema y llegué a la conclusión de que esto no es posible en este momento. Principalmente porque estaba previsto o aún no se implementó, consulte: https://github.com/eclipse-ee4j/jpa-api/issues/167
Para la prueba, creé un repositorio para encontrar cualquier evento que pudiera consumir para el propósito dado: https://github.com/HannesRakete/so-jpa-element-collection-events
Agregue una @Version para el bloqueo optimista en la entidad principal.
Migre a otro tipo de asociación, consulte https://thorben-janssen.com/hibernate-tips-query-elementcollection/