je la situation suivante:JPA - ManyToOne - joinTable - ne peut pas mettre à jour un champ
AnagraficaIscritti.java
@Entity
@Table(name="ANAGRAFICA_ISCRITTI")
public class AnagraficaIscritti implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ID_EMAIL",insertable=false, updatable=false)
private long idEmail;
private String email;
//bi-directional many-to-many association to Newsletter
@ManyToMany(mappedBy="anagraficaIscrittis")
private List<Newsletter> newsletters;
//bi-directional many-to-one association to IscrizioniEmail
@OneToMany(mappedBy="anagraficaIscritti")
private List<IscrizioniEmail> iscrizioniEmails;
Newsletter.java
@Entity
@Table(name="NEWSLETTER")
public class Newsletter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ID_NEWSLETTER")
private long idNewsletter;
//bi-directional many-to-many association to AnagraficaIscritti
@ManyToMany
@JoinTable(
name="ISCRIZIONI_EMAIL"
, joinColumns={
@JoinColumn(name="ID_NEWSLETTER")
}
, inverseJoinColumns={
@JoinColumn(name="ID_EMAIL")
}
)
private List<AnagraficaIscritti> anagraficaIscrittis;
//bi-directional many-to-one association to IscrizioniEmail
@OneToMany(mappedBy="newsletter")
private List<IscrizioniEmail> iscrizioniEmails;
IscrizioniEmail.java
@Entity
@Table(name="iscrizioni_email")
public class IscrizioniEmail implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private IscrizioniEmailPK id;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="SUBSCRIPTION_DATE")
private Date subscriptionDate;
//bi-directional many-to-one association to AnagraficaIscritti
@ManyToOne
@JoinColumn(name="ID_EMAIL",insertable = false, updatable = false)
private AnagraficaIscritti anagraficaIscritti;
//bi-directional many-to-one association to Newsletter
@ManyToOne
@JoinColumn(name="ID_NEWSLETTER", insertable = false, updatable = false)
private Newsletter newsletter;
IscrizioniEmailPK.java
@Embeddable
public class IscrizioniEmailPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="ID_EMAIL", insertable=false, updatable=false)
private long idEmail;
@Column(name="ID_NEWSLETTER", insertable=false, updatable=false)
private long idNewsletter;
Quand j'ai essayé de créer un objet AnagraficaIscritti et un bulletin d'objet, un enregistrement est automatiquement inséré aussi dans IscrizioniEmail. Par exemple, je crée:
ANAGRAFICA_ISCRITTI
ID_EMAIL EMAIL
1 [email protected]
NEWSLETTER
ID_NEWSLETTER NEWSLETTER
1 sport
ISCRIZIONI_EMAIL
ID_EMAIL ID_NEWSLETTER SUBSCRIPTION_DATE
1 1 NULL
Mais quelle est la bonne façon de mettre à jour SUBSCRIPTION_DATE (avec l'horodatage en cours), ce qui est nul? Si je tente de créer un objet IscrizioniEmail j'ai eu des erreurs clés et dupliquer ainsi de suite.
Avez-vous essayé de créer un '@ classe Entity'' IscrizioniEmail'? – alayor
Je ne comprends pas. La classe d'entité IscrizioniEmail existe. – pacionet
Merci, définir une valeur par défaut fonctionne: 'SUBSCRIPTION_DATE' DATETIME DEFAULT NOW() Je pense que JPA est parfois très compliqué. – pacionet