【问题标题】:Spring Data JDBC One-To-Many with Custom Column Name具有自定义列名的 Spring Data JDBC 一对多
【发布时间】:2021-04-30 01:37:15
【问题描述】:

我正在使用 spring-boot-starter-data-jdbc 2.4.2。在我的域聚合中,我需要映射一个从另一个表中的列填充的字符串列表。它是一个遗留数据库,所以我无法控制表名和列名,需要使用自定义名称。我看到有一个 @MappedCollection 注释,但看不到在这种情况下如何使用它。下面是我的课:

@Data
@Table("NMT_MOVIE_THEATRE")
public class MovieTheatre {

    @Id
    @Column("MOVIE_THEATRE_ID")
    private Long id;

    @Column("ZIP_CODE")
    private String zipCode;

    // this comes from table NMT_CURRENT_MOVIE, column CM_ID, joined by MOVIE_THEATRE_ID
    private List<String> currentMovieIds;
}

使用 Spring Data JDBC,如何创建一对多关系?

【问题讨论】:

    标签: spring mapping spring-data-jdbc


    【解决方案1】:

    将您的String 包裹在一个小实体中。

    @Table("NMT_CURRENTMOVIE")
    class MovieId {
        @Id
        @Column("CM_ID")
        final String id
    
        // add constructor, equals and hashCode here or generate using Lombok
    }
    

    然后在MovieTheatre 中使用它。由于您没有索引列,因此要使用的正确集合是 Set

    // ...
    class MovieTheatre {
        // ...
        @MappedCollection(idColumn="MOVIE_THEATRE_ID")
        Set<MovieId> currentMovieIds;
    }
    

    请注意,equalshashCode 以及采用其中使用的所有参数的构造函数很重要,因为实体在 Set 中使用。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多