У меня есть сущность с именем Person, внутри этих основных метаданных, а затем внутри этого тега и языка. Я хочу получить все строки, которые содержат конкретные имя тега и язык.
Я узнал о критериях запроса о. Как мы можем связать две разные сущности вместе?
Пример: получить все строки, имеющие тег «Модель» и язык как «Английский».
@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;
-------------
}
Я создал простой метод для спецификации Query, это правильно
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);
};