ORM Framework для реактивных приложений

Попробуйте следующее:

SELECT
    *,
    ARRAY(
        SELECT 
            * 
        FROM 
            unnest(string_to_array(trim(both ',' from prods), ',')) 
        WHERE 
            unnest = ANY(string_to_array(',142,87,', ','))
    )
FROM
    prods_table;

Выход:

1   ,142,10,75,     {142}
2   ,142,87,63,     {142,87}
3   ,75,73,2,58,    {}
4   ,142,2,         {142}

Добавьте функцию cardinality(anyarray) в последний столбец, чтобы получить только количество совпадений.

И подумайте об изменении дизайна базы данных.

0
задан gnom_7 19 January 2019 в 18:22
поделиться

1 ответ

Вы правы, что spring-data-r2dbc не является ORM. Он не отображает отношения в вашей базе данных. Что он может сделать, так это сопоставить строки вашей базы данных с объектами. Следующий фрагмент кода сопоставляется со строкой базы данных ниже:

Пример класса в Kotlin:

@Table("song")
class SongRow(
    @Id val id: Long, 
    val name: String, 
    val artist: Long
)

Строка:

create table song(
    id integer identity primary key,
    artist integer references artist(id),
    name varchar(100) NOT NULL,
);

Для способа автоматического получения столбцов в соответствии с вашей моделью см .: https://docs.spring.io/spring-data/r2dbc/docs/1.0.0.M1/reference/html/#mapping-usage

В ссылке выше также указано, что вы можете использовать @Column.

Что касается одного из ваших вопросов:

Какие варианты существуют или планируются для поддержки ORM в реактивных приложениях? Понятия не имею

Что касается:

присоединяется при использовании spring-data-r2dbc

Используя аннотацию @Query, вы может выполнять соединения. Если вы хотите отобразить данные, полученные с помощью объединений, вам лучше использовать DatabseClient (см. https://docs.spring.io/spring-data/r2dbc/docs/1.0.0.M1 /reference/html/#r2dbc.datbaseclient)

0
ответ дан Seanvd 19 January 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: