Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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/EclipseLink-在启动时创建/更新表期间创建的不需要的外键_Java_Jpa 2.0_Eclipselink - Fatal编程技术网

Java JPA/EclipseLink-在启动时创建/更新表期间创建的不需要的外键

Java JPA/EclipseLink-在启动时创建/更新表期间创建的不需要的外键,java,jpa-2.0,eclipselink,Java,Jpa 2.0,Eclipselink,我有以下@Entity类 @Entity public class Asset { @Id private long id; @Enumerated(EnumType.STRING) private TagType tagType; private String tagId; @OneToOne(cascade = CascadeType.ALL, optional = true, orphanRemoval = true) @JoinColumns(valu

我有以下
@Entity

@Entity
public class Asset {

  @Id
  private long id;

  @Enumerated(EnumType.STRING)
  private TagType tagType;

  private String tagId;

  @OneToOne(cascade = CascadeType.ALL, optional = true, orphanRemoval = true)
  @JoinColumns(value = {
    @JoinColumn(name = "tagId", referencedColumnName = "tagId", nullable = true, insertable = false, updatable = false),
    @JoinColumn(name = "tagType", referencedColumnName = "tagType", nullable = true, insertable = false, updatable = false)})
  private TagInfo tagInfo;

  ...
}

当EclipseLink开始使用
“EclipseLink.ddl generation”=“drop and create tables”
时,它将使用以下约束创建
资产
表:

CONSTRAINT FK_ASSET_TAGTYPE FOREIGN KEY(TAGTYPE,TAGID) REFERENCES TAGINFO(TAGTYPE,TAGID))

是否仍然需要EclipseLink而不是在
资产
表上创建上述约束?

为什么要避免此约束?它确保您的数据是一致的。根据上述约束,当我插入带有tagId和tagType的资产(TagInfo没有对应的tagId/tagType条目)时,它抛出“完整性约束冲突-无父FK_Asset_tagType”。这不是欲望行为。基本上,我希望能够有一个左连接的资产和标记信息,使资产可以存在或没有标记信息。
CONSTRAINT FK_ASSET_TAGTYPE FOREIGN KEY(TAGTYPE,TAGID) REFERENCES TAGINFO(TAGTYPE,TAGID))