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))