I need to search on a field that is a list of objects stored as a json blob. Need to search where an the "name" equals "Order Number" and value equals 1234 in the example below.
@Data
@Entity
public class Order {
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
private List<ReferenceNumber> referenceNumbers = new ArrayList<>();
...
}
@Data
public class ReferenceNumber {
private ReferenceNumberType type;
private String value;
}
@Data
public class ReferenceNumberType {
private long id
private String name;
}
I have a search specification that I can't figure out how to create the Predicate
public class OrderSearchSpecification implements Specification<Order> {
@Override
public Predicate toPredicate(@NonNull Root<Order> root,
@NonNull CriteriaQuery<?> criteriaQuery,
@NonNull CriteriaBuilder builder) {
...
String v = 1234
Need to search where an the "name" equals "Order Number" and value equals v
...
}
Data looks like the following in the database.
[
{"type": {"id": 3, "name": "Order Number"}, "value": "1234"},
{"type": {"id": 2, "name": "foo"}, "value": "bar"}
]