gpt4 book ai didi

没有外键的Hibernate ManyToOne

转载 作者:行者123 更新时间:2023-12-02 05:40:14 31 4
gpt4 key购买 nike

我正在寻找有关大型遗留模式映射的一些建议。

情况是这样的。假设我们有一个名为 BusinessTransaction 的类。此类有几个引用用户 ID 的字段:

@Entity
public class BusinessTransaction implements Serializable {

private Long id;
private User createdBy;
private User editedBy;
private User cancelledBy;

private String department;
// etc

}

public class User implements Serializable {
private Long id;
private String department;
//etc
}

但是,在 BusinessTransaction 表和 User 表之间没有外键。在 SQL 中,用户将通过部门键上的左外连接连接到 BusinessTransaction。

创建这些外键需要创建连接表。我们的 DBA 不愿意创建外键或连接表,并且这样做的原因是可以理解的(影响批处理脚本、对应用程序可能产生的副作用等)。

我唯一的其他想法是使用 JoinFormula。然而,@JoinFormula 没有最好的文档,我的理解是数据将是只读的。

我是否忽略了任何有用的东西?

编辑:添加部门。

杰森

最佳答案

无需创建外键或连接表即可在 Hibernate 中声明这些表之间的关系。 Hibernate 不会验证此类外键是否存在(只要您不需要数据库架构验证)。

但是请注意,您需要在 User 表上建立适当的索引。索引也独立于外键,但不创建它们将导致性能的急剧下降。

但是你必须注意,如果没有创建外键,如果 User 表中的键丢失,你可以预期 Hibernate 端的不确定行为(错误)。外键是为了保证数据库的一致性。

关于没有外键的Hibernate ManyToOne,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083132/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com