Spring Data JDBC - Many-to-One Relationship(Spring Data JDBC - 多对一关系)
问题描述
我似乎在网上找不到任何关于在 Spring JDBC 中使用多对一映射的参考资料.我刚刚在不支持的文档中看到了,但我不确定是否是这种情况.
I can't seem to find any reference online with regards to using a Many-To-One mapping in Spring JDBC. I just saw in the documentation that is not supported but I'm not sure if this is the case.
我的示例是我想将我的 AppUser 映射到特定部门.
My example is that I want to map my AppUser to a particular Department.
作为参考,AppUser 使用 DEPARTMENT_ID 加入 Department 表
For reference, AppUser joins to Department table using DEPARTMENT_ID
@Table(value="m_appuser")
public class AppUserProjectionTwo {
@Id
private Long id;
private String firstname;
private String middlename;
private String lastname;
@Column("DEPARTMENT_ID")
private DepartmentProjection departmenProjection;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
但是,它似乎无法正确映射.
However, it seems that it won't map properly.
@Table("M_DEPARTMENT")
public class DepartmentProjection {
@Id
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
创建的查询如下所示.我正在寻找更多相反的东西,其中 M_APPUSER.department_ID = Department.id
The created query looks like this. I was looking for something more of the opposite in which M_APPUSER.department_ID = Department.id
[SELECT "m_appuser"."ID" AS "ID", "m_appuser"."LASTNAME" AS "LASTNAME", "m_appuser"."FIRSTNAME" AS "FIRSTNAME", "m_appuser"."MIDDLENAME" AS "MIDDLENAME", "departmenProjection"."ID" AS "DEPARTMENPROJECTION_ID" FROM "m_appuser" LEFT OUTER JOIN "M_DEPARTMENT" AS "departmenProjection" ON "departmenProjection"."DEPARTMENT_ID" = "m_appuser"."ID" WHERE "m_appuser"."FIRSTNAME" = ?];
谢谢
推荐答案
我刚刚在文档中看到不支持,但我不确定是否是这种情况.
I just saw in the documentation that is not supported but I'm not sure if this is the case.
我可以确认它不受支持.多对一关系跨越聚合的边界.跨聚合的引用必须建模为被引用聚合的 id.
I can confirm it is not supported. Many-To-One relationships cross the boundaries of aggregates. References across aggregates must be modelled as ids of the referenced aggregate.
如果你不这样做,Spring Data JDBC 将把引用视为一对一关系和同一聚合的一部分,这将对多对一关系产生你不想要的影响,例如当被引用的实体被删除时,被引用的实体被删除.这对于同一聚合中的一对一关系是正确的.
If you don't do this Spring Data JDBC will consider the reference a One-To-One relationship and part of the same aggregate which will have effects you don't want for a Many-To-One relationship, like the referenced entity getting deleted when the referenced entity gets deleted. Which would be correct for a One-To-One relationship within the same aggregate.
这在 中有更详细的解释https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates
这篇关于Spring Data JDBC - 多对一关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring Data JDBC - 多对一关系
基础教程推荐
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01