【发布时间】:2019-05-29 04:13:03
【问题描述】:
我有一个名为 Person 的实体,在基本元数据中,然后在标签和语言中。我想获取包含特定标签名称和语言的所有行。 我开始了解有关 Criteria Query 的信息。我们如何将两个不同的实体连接在一起?
示例:获取标签为 Model 且语言为 English 的所有行。
@Entity
public Person {
@Id
private String id;
private BasicMetadata basicMetadata;
-----------
}
基本元数据表
@Entity
public BasicMetadata {
@Id
private String id;
private List<Tag> tags;
private List<Language> language;
-------------
}
标签表
@Entity
public Tag {
@Id
private String id;
private String name;
-------------
}
语言表
@Entity
public Language{
@Id
private String id;
private String name;
-------------
}
我为规范创建了一个简单的方法查询是否正确
private Specification<Person> containsText(String keyword) {
return (root,query, builder) -> {
String finalText = keyword.toLowerCase();
if (!finalText.contains("%")) {
finalText = "%" + finalText + "%";
}
Predicate genreExp = builder.like(builder.lower(root.get("basicMetadata").get("tags")), finalText);
return builder.or(genreExp);
};
【问题讨论】:
标签: java spring-boot jpa criteria-api