Java JPA-ManyToOne-JoinTable-无法更新字段
我有以下情况: anagraficaiscriti.javaJava JPA-ManyToOne-JoinTable-无法更新字段,java,jpa,jointable,Java,Jpa,Jointable,我有以下情况: anagraficaiscriti.java @Entity @Table(name="ANAGRAFICA_ISCRITTI") public class AnagraficaIscritti implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTI
@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;
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;
当我试图创建一个对象anagraficaiscriti和一个对象时事通讯时,一条记录也会自动插入到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
但是,更新订阅日期(使用当前时间戳)的正确方法是什么,它是空的?如果我尝试创建一个对象IscrizioniEmail,我会得到重复的键错误等等。您可以在
ISCRIZIONI\u EMAIL
表中为SUBSCRIPTION\u DATE
设置默认值,该值将是当前日期。这样您就不需要从Java发送它了
如果您需要从Java发送该值,那么您可以在插入
Newsletter
和anagraficaiscriti
表之后,使用IscrizioniEmail
实体类执行更新查询。您是否尝试过创建@entity
实体类IscrizioniEmail
?我不明白。实体类IscrizioniEmail存在。谢谢,定义默认值很有效:SUBSCRIPTION\u DATE
DATETIME default NOW()我认为JPA有时非常复杂。
@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;
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