Java 使用复杂关联表连接JPA实体,而不创建关联实体?
我试图使用一个不太简单的关联表在两个JPA实体之间进行多个连接。我想知道是否有一种方法可以在不创建关联表实体的情况下实现这一点(类似于使用@JoinTable) 数据库模式 表aJava 使用复杂关联表连接JPA实体,而不创建关联实体?,java,sql-server,hibernate,Java,Sql Server,Hibernate,我试图使用一个不太简单的关联表在两个JPA实体之间进行多个连接。我想知道是否有一种方法可以在不创建关联表实体的情况下实现这一点(类似于使用@JoinTable) 数据库模式 表a -ID(主键) -名字 表b -ID(主键) -名字 表格映射 -ID(主键) -父对象ID(FK)-->TableMapping.ID -A_ID(FK)-->表A.ID -B_ID(FK)-->表B.ID 例子 表 身份证名称 ----------------------- A1代数 A2数据结构 A3经济学
-ID(主键)
-名字 表b
-ID(主键)
-名字 表格映射
-ID(主键)
-父对象ID(FK)-->TableMapping.ID
-A_ID(FK)-->表A.ID
-B_ID(FK)-->表B.ID 例子 表 身份证名称 ----------------------- A1代数 A2数据结构 A3经济学 表B 身份证名称 ------------------------ B1初学者 B2高级 表映射 ID父项\u ID A\u ID B\u ID ---------------------------------- 1空B1 2空B2 3 1 A1空 4 2 A2空 5 2 A3空 映射以我上面描述的方式存储,原因我不知道,也无法更改。很多地方都在这样使用它,我必须按照它的方式工作。从本质上讲,TableMapping中的数据可以简化为这样的内容 A_ID B_ID ------------- A1 B1 A2 B2 A3 B2 A_ID B_ID ------------- A1 B1 A2 B2 A3 B2 根据我对问题的理解,有两种方法:
@实体
@表(name=“TableA”)
公共类实体{
@身份证
@列(name=“ID”)
公共int id;
@列(name=“name”)
公共字符串名称;
}
@实体
@表(name=“TableB”)
公共类实体B{
@身份证
@列(name=“ID”)
公共int id;
@列(name=“name”)
公共字符串名称;
//要添加以下映射吗
//@manytomy
//@可接合或等效??
//公共集实体集;
}
我不知道是否有办法使用这个奇怪的映射表连接两个实体,而不创建实体或视图。有什么方法可以做到这一点吗?您应该首先学习数据库规范化。你应该选择一个而不是许多<代码>提示:您可以通过在两个表之间添加另一个表来完成此操作 此外,为使用OneToMany而创建的对象必须是列表或集合。
如果你的问题是,是否可以避免创建某种关联实体,我相信答案是否定的。毕竟,它需要一个持久化的地方。是有道理的。我试图找到一种避免持久关联的方法的唯一原因是,我永远不会向数据库写入任何内容,而只是从中读取。所有的实体都是只读的,我在两个实体之间有一个映射表(在我的例子中是TableMapping)。这是一个现有的数据库设计,我必须按照它的方式工作。因为我只想从这个数据库中读取数据,所以我正在寻找一种不必为关联表创建实体的方法。我有另一个例子,两个实体通过映射表连接,但它要简单得多,我能够在@JoinTable的帮助下映射这两个实体,而无需创建映射表实体。同样,只读取这两个实体,不担心写入。 A_ID B_ID ------------- A1 B1 A2 B2 A3 B2