小编gyb*_*ndi的帖子

JPA 规范搜索字符串列表包含

我有以下实体:

@Entity
@Table(name = "my_entity");
public class MyEntity {
    // some fields
    @Column(name = "languages")
    @Convert(converter = StringToListConverter.class)
    private List<String> languages;
}
Run Code Online (Sandbox Code Playgroud)

SQL表:

CREATE TABLE my_entity (
    id VARCHAR(255) PRIMARY KEY,
    // some fields
    languages VARCHAR(255) DEFAULT NULL
);
Run Code Online (Sandbox Code Playgroud)

该字段languages包含以逗号分隔的值列表EN,FR,NO

我的任务是选择包含某种语言的记录。例如,在本机 SQL 中我想使用以下 SQL:

SELECT * FROM my_entity e WHERE e.languages LIKE CONCAT('%', 'EN', '%');
Run Code Online (Sandbox Code Playgroud)

我尝试使用规范来做到这一点:

Specification<MyEntity> specification = (root, query, cb) -> {
    final Path<Collection<String>> langs = root.get("languages");
    // also I tried root.joinList
    return cb.isMember("EN", langs); …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa

5
推荐指数
1
解决办法
9449
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1