簡體   English   中英

Spring Data JDBC - 多對一關系

[英]Spring Data JDBC - Many-to-One Relationship

我似乎無法在網上找到任何關於在 Spring JDBC 中使用多對一映射的參考。 我剛剛在不支持的文檔中看到,但我不確定是否是這種情況。

我的例子是我想將我的 AppUser 映射到一個特定的部門。

作為參考,AppUser 使用 DEPARTMENT_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;
    }

但是,它似乎無法正確映射。

@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

[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" = ?];

謝謝

我剛剛在不支持的文檔中看到,但我不確定是否是這種情況。

我可以確認它不受支持。 多對一關系跨越了聚合的邊界。 跨聚合的引用必須建模為被引用聚合的 id。

如果您不這樣做,Spring Data JDBC 將認為引用是一對一關系和同一聚合的一部分,這將對多對一關系產生您不想要的影響,例如被引用的實體獲得當引用的實體被刪除時刪除。 這對於同一聚合中的一對一關系是正確的。

這在https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates中有更詳細的解釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM