5

我目前正在尝试在 Spring Boot 中为已经进入开发阶段的应用程序实现 R2DBC - 不幸的是,这意味着我们的 DDL 并不灵活,因为其他微服务依赖于此,反之亦然。R2DBC 的一个重要限制是不支持嵌套类。此外,它不支持 JPA,因为这会破坏全面非阻塞的目的。因此,所有这些有用的注释也不在讨论范围内。

我正在处理的课程看起来像这样:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString

public class Stats {
   @Id
   StatsPK statsPK

   @Column(stat_name)
   String stat;

   ...

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Embeddable
    public static class StatsPK implements Serializable {
        @Column("store_id")
        private Integer storeId;

        @Column("empl_id")
        private String emplId;

        @Column("app_version")
        private String appVersion;
    }
}

在研究了我的问题后,我发现了很多方法来计算复合键,包括上面示例中已经显示的内容(使用 @Embeddable 注释),使用自定义 PK 对象(类似,但会使用为此目的设计的类的选项,例如 CompositeKeyHolder)、JPA @TableId(TableId.class) 注释,以及其他一些看起来不太有希望的类。

所有这些选项似乎都在使用 JPA 或使用嵌套对象,而我无法做到。我真的想不出解决这些限制的方法。但是由于我是初学者,所以我决定询问是否有人以前处理过这个问题。感谢任何反馈。

4

1 回答 1

3

Spring Data R2DBCs 存储库抽象尚不支持复合键。您可以使用DatabaseClient它来构造 SQL 和查询数据

于 2019-03-26T06:28:18.713 回答