我有以下实体:
@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)