I’m have a java spring application that use a criteria query. The query has a multiselect and one of the values is a subquery that bring an complete entity. The application work on original enviroment where we create it but we try to run in a new environment and updated some libs and now doesn’t work.
Example of case
@Entity
public class User {
private Long id;
private String name;
private String lastName;
}
@Entity
public class Address {
private Long id;
private String foo;
private String bar;
}
@Getter
@AllArgsConstructor
public class DataResultQuery {
private String name;
private String lastName;
private Address firstAddress;
private Address lastAddress;
}
public class Example {
public DataResultQuery getData(Long id) {
var builder = entityManager.getCriteriaBuilder();
var query = builder.createQuery(DataResultQuery.class);
var user = query.from(User.class);
var address = user.join(User_.addresses);
var firstAddress = getSubquery(address);
var lastAddress = getSubquery(address);
query.multiselect(
user.get(User_.name),
user.get(User_.lastName),
firstAddress.getSelection(),
lastAddress.getSelection()
);
query.where(); //Predicates
var typedQuery = entityManager.createQuery(query);
return typedQuery.getSingleResult();
}
private Subquery<Address> getSubquery(Join<?, Address> address) {
var builder = entityManager.getCriteriaBuilder();
var query = builder.createQuery(Address.class);
var subquery = query.subquery(Address.class);
var address = subquery.from(Address.class);
subquery.select(address);
subquery.where(); //Predicates
return subquery;
}
}
And return something like this when i try to execute the query
Cannot instantiate class 'com.package.example.result_queries.DataResultQuery' (it has no constructor with signature
I tried search something about but i did not found anything and tried to create the full constructor manually
Felipe Schultz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.