Ho lavorato ai miei eventi JPA (postUpdate) e si stanno attivando correttamente quando aggiorno una proprietà sulla mia entità ad eccezione di quelli mappati come @ElementCollection.Qual è il trucco per far attivare i miei EventListeners per le proprietà @ElementCollection?
È una limitazione? Un'opzione di configurazione?
Ecco parte della mia entità
@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;
...
In altre parole, se cambio "titolo" Il cambiamento è catched dal mio ascoltatore, ma lo stesso non si verifica quando cambio "Destinazioni"
sto utilizzando JPA con Hibernate (4,0) come provider tramite molla (3.1)
Grazie
Puoi essere più specifico per quando dici di _cambiare "destinazioni" _? Stai sostituendo la lista o modificando la lista? – pgreen2
@ pgreen2 thx, quando ho detto _change_ intendevo in entrambi i casi, un elemento nell'elenco, ad esempio 'destinations.add (" LA ");' o semplicemente impostando un nuovo elenco, ad es. 'destinations = new ArrayList() ...' poi ho chiamato 'EntityManager.save (xx)'. Nessuno dei precedenti licenzia il mio 'onPostUpdate()', mentre eseguo 'Pckg.setTitle (" nuovo titolo ")' attiva correttamente il mio ascoltatore – maverick
Ho dato una breve occhiata alle specifiche (http://download.oracle.com/ otndocs/jcp/persistence-2.0-fr-oth-JSpec /) e non mi viene in mente niente di sbagliato. Ho notato un paio di note su quando si verificano gli eventi. Potrebbero accadere quando si verifica la modifica o quando il cambiamento viene svuotato. Inoltre, la specifica non specifica cosa dovrebbe accadere se un'entità viene modificata e quindi rimossa, aggiunta e modificata. Non sembra che questi casi limite siano il tuo problema. Non ho una configurazione del letto di prova. Puoi pubblicare il codice dell'ascoltatore e il codice di prova? – pgreen2