I have a question regarding jpaStreamer
I use jpaStreamer with Quarkus and have a question regarding a query that I would like to build.
I have an entity Member which has another entity as property, say MemberContact which has two String msisdn and emailAddress
I would like to use the repository using Member, like "MemberRepository implements PanacheRepository" and in my search code, I would like to access the msisdn, how do I do it as I can't do stream.filter(Member$.msisdn.containsIgnoreCase(request.msisdn));"
and I can't do
stream.filter(Member$.memberContact.msisdn.containsIgnoreCase(request.msisdn));
because memberContact when generated is of type com.speedment.jpastreamer.field.ReferenceField<Member, MemberContact>
The reproducer asked for
@Entity
@Table(name = "institute")
public class Institute extends PanacheEntity {
@Column(name = "code") public String code;
@Column(name = "name") public String name;
@ManyToOne @JoinColumn(name = "status_id", referencedColumnName = "id") public Status status;
public static Institute findByCode(final String code) {
return Institute.find("code", code).firstResult();
}
}
@Entity
@Table(name = "status")
public class Status extends PanacheEntity {
@Column(name = "code") public String code;
@Column(name = "description") public String description;
@OneToMany(mappedBy = "status") public List<Institute> institutes = new ArrayList<>();
public static Status findByCode(final String code) {
return Status.find("code", code).firstResult();
}
}
@RequestScoped
public class InstituteRepository implements PanacheRepository<Institute> {
@Inject JPAStreamer jpaStreamer;
public List<Institute> searchUsers(final SearchInstitutes request) {
var stream = jpaStreamer.stream(Institute.class);
if (isNotEmpty(request.code)) {
stream.filter(Institute$.code.containsIgnoreCase(request.code));
}
if (isNotEmpty(request.name)) {
stream.filter(Institute$.name.containsIgnoreCase(request.name));
}
return stream.collect(toList());
}
}
How do I make a condition if I want for example to search for an Institute whose Status has the code request.code ?
Because Institute$.status.code.containsIgnoreCase(request.code) won't work
Regards, D.