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

В настоящее время я пытаюсь внедрить 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 Ответ

1 голос
/ 26 марта 2019

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

...