spring数据jdbc-多对一关系

hsgswve4  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(421)

我在网上似乎找不到任何关于在springjdbc中使用多对一Map的参考资料。我只是在文档中看到了不支持的内容,但我不确定是否是这样。
我的例子是,我想把我的appuserMap到一个特定的部门。
作为参考,appuser使用department\u id连接到department表

@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;
    }

但是,它似乎无法正确Map。

@Table("M_DEPARTMENT")
public class DepartmentProjection {
    @Id
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

创建的查询如下所示。我在寻找一些更为相反的东西,其中m\u appuser.department\u 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" = ?];

谢谢

tjjdgumg

tjjdgumg1#

我只是在文档中看到了不支持的内容,但我不确定是否是这样。
我可以确认它不受支持。多对一关系跨越了聚合的边界。跨聚合的引用必须建模为引用聚合的ID。
如果您不这样做,那么spring数据jdbc会将引用视为一对一关系,并将其视为同一聚合的一部分,这将对多对一关系产生您不希望的影响,比如当被引用的实体被删除时,被引用的实体被删除。这对于同一聚合中的一对一关系是正确的。
这将在中进行更详细的解释https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates

相关问题