Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA-ManyToOne-JoinTable-无法更新字段_Java_Jpa_Jointable - Fatal编程技术网

Java JPA-ManyToOne-JoinTable-无法更新字段

Java 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

我有以下情况:

anagraficaiscriti.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;
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