私は次のような状況があります。JPA - ManyToOne - JoinTable - フィールドを更新することはできません
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;
私は、オブジェクトAnagraficaIscrittiとオブジェクトのニュースレターを作成しようとすると、レコードが自動的にIscrizioniEmailにも挿入されています。例えば、私が作成します。
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
しかし、nullである(現在のタイムスタンプ付き)SUBSCRIPTION_DATEを更新する正しい方法は、何ですか?オブジェクトIscrizioniEmailを作成しようとすると、キーの重複エラーなどが発生します。
'@ Entity'クラス' IscrizioniEmail'を作成しようとしましたか? – alayor
私は分かりません。エンティティクラスIscrizioniEmailが存在します。 – pacionet
ありがとう、既定値を定義します。 'SUBSCRIPTION_DATE' DATETIME DEFAULT NOW() JPAは時には非常に複雑だと思います。 – pacionet