我目前正在尝试在 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 或使用嵌套对象,而我无法做到。我真的想不出解决这些限制的方法。但是由于我是初学者,所以我决定询问是否有人以前处理过这个问题。感谢任何反馈。