如何解决防止在映射表中创建外键?
我们如何防止在休眠状态下创建外键? 我需要在我的“ oneToMany”关系中插入一些尚不存在的子项。休眠状态应该忽略这些孩子还不存在的事实。
当前,一旦我尝试插入那些不存在的子代,就会收到外键异常。所以我需要禁用外键的创建/使用。
angular
我们如何实现这一目标?
解决方法
我找到了一个解决方案...您可以使用“ JoinTable”来修改创建内容,而不必让休眠状态由您自己完全创建连接表。
@Entity
@Table(name = "chunk",uniqueConstraints = {@UniqueConstraint(columnNames={"x","y"})},indexes = {@Index(columnList = "x,y")})
@Access(value = AccessType.FIELD)
@SelectBeforeUpdate(false)
public class Chunk extends HibernateComponent{
public int x;
public int y;
public Date createdOn;
@OneToMany(fetch = FetchType.EAGER,cascade = {})
@JoinTable(name = "chunk_identity",joinColumns = @JoinColumn(name = "identity_id"),inverseJoinColumns = @JoinColumn(name = "id"),inverseForeignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
@Fetch(FetchMode.JOIN)
@BatchSize(size = 50)
public Set<Identity> inChunk = new LinkedHashSet<>();
@Transient
public Set<ChunkLoader> loadedBy = new LinkedHashSet<>();
public Chunk() {}
public Chunk(int x,int y,Date createdOn) {
this.x = x;
this.y = y;
this.createdOn = createdOn;
}
}
通过这种方式,我们可以定义是否需要外键,或者我们可以简单地忽略它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。