Java JPA@OneToMany和@EmbeddedId

Java JPA@OneToMany和@EmbeddedId,java,jpa,Java,Jpa,我有以下班级(家长): 子类将主键定义为嵌入id: @Entity @Table(name = "PROBE_MONITORS") public class ProbeMonitor implements Serializable { private static final long serialVersionUID = 1L; private ProbeMonitorId id; private Integer active; @EmbeddedId

我有以下班级(家长):

子类将主键定义为嵌入id:

@Entity
@Table(name = "PROBE_MONITORS")
public class ProbeMonitor implements Serializable {

    private static final long serialVersionUID = 1L;

    private ProbeMonitorId id;
    private Integer active;

    @EmbeddedId
    @XmlElement
    @JsonProperty
    public ProbeMonitorId getId() {
        return id;
    }
}
当我创建
ProbeCustomer
的实体并尝试调用save方法时(使用
crudepository
) 我得到以下(错误的insert语句)-在insert中有比我在那里写的更多的字段,为了简洁起见,我删除了这些字段:

insert into PROBE_CUSTOMERS (Df_Hostname, Dt_Insert, Df_Customer, Dt_Update, id) values (?, ?, ?, ?, ?)
insert into PROBE_MONITORS (Fl_Active, Dt_Insert, Dt_Update, Df_Customer, Df_Monitor, Df_Type) values (?, ?, ?, ?, ?, ?)
insert into Probe_Monitors (Df_Customer, monitors_Df_Customer, monitors_Df_Monitor, monitors_Df_Type) values (?, ?, ?, ?)

我在哪里错误地定义了关系?

不知何故,插入中的字段与映射中的字段不匹配。当所有这些都是出乎意料的时候,很难发现哪些是错误的。在网上我找到了一篇文章,我把@OneToMany简化为@OneToMany(mappedBy=“id.customer”,cascade={CascadeType.all},fetch=FetchType.LAZY)。这一切都很有效
@Entity
@Table(name = "PROBE_MONITORS")
public class ProbeMonitor implements Serializable {

    private static final long serialVersionUID = 1L;

    private ProbeMonitorId id;
    private Integer active;

    @EmbeddedId
    @XmlElement
    @JsonProperty
    public ProbeMonitorId getId() {
        return id;
    }
}
insert into PROBE_CUSTOMERS (Df_Hostname, Dt_Insert, Df_Customer, Dt_Update, id) values (?, ?, ?, ?, ?)
insert into PROBE_MONITORS (Fl_Active, Dt_Insert, Dt_Update, Df_Customer, Df_Monitor, Df_Type) values (?, ?, ?, ?, ?, ?)
insert into Probe_Monitors (Df_Customer, monitors_Df_Customer, monitors_Df_Monitor, monitors_Df_Type) values (?, ?, ?, ?)