Возможно ли реализовать POJO в Spring Boot, в котором есть поле, представляющее составной первичный ключ, без использования JPA или вложенных классов?

В настоящее время я пытаюсь внедрить R2DBC в Spring Boot для приложения, которое уже находится в стадии разработки. Это означает, что, к сожалению, наш 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, либо используют вложенный объект, чего я не могу сделать. Я не могу придумать, как обойти эти ограничения. Но так как я новичок, я решил спросить, не сталкивался ли кто-нибудь с этим вопросом раньше. Ценю любые отзывы.

1 ответ

Решение

Абстракция репозитория Spring Data R2DBC еще не поддерживает составные ключи. Что вы могли бы использовать DatabaseClient хотя для создания вашего SQL и для запроса данных.

Другие вопросы по тегам