【发布时间】:2017-01-15 18:30:01
【问题描述】:
我有以下情况:
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;
当我尝试创建 Object AnagraficaIscritti 和 Object Newsletter 时,也会在 IscrizioniEmail 中自动插入一条记录。例如我创建:
ANAGRAFICA_ISCRITTI
ID_EMAIL EMAIL
1 john.doe@gmail.com
NEWSLETTER
ID_NEWSLETTER NEWSLETTER
1 sport
ISCRIZIONI_EMAIL
ID_EMAIL ID_NEWSLETTER SUBSCRIPTION_DATE
1 1 NULL
但是更新 SUBSCRIPTION_DATE(使用当前时间戳)的正确方法是什么,它是空的?如果我尝试创建一个 Object IscrizioniEmail,我会遇到重复的键错误等等。
【问题讨论】:
-
您是否尝试过创建
@Entity类IscrizioniEmail? -
我不明白。实体类 IscrizioniEmail 存在。
-
谢谢,定义默认值有效:
SUBSCRIPTION_DATEDATETIME DEFAULT NOW() 我认为 JPA 有时非常复杂。