how do i combine 2n-level-caching with queries that use a constructor-call?
1. cache activated, works.
@NamedQueries({
@NamedQuery(
name = "countryNamesByCode",
query = "SELECT c FROM Country c WHERE c.isoCode = :paramIsoCode",
hints={
@QueryHint(name = QueryHints.QUERY_RESULTS_CACHE, value = HintValues.TRUE)
}
)
})
@Entity
public class Country extends AbstractEntity {
//...
public static List<Country> getCountries(final String isoCode) {
final Query userQuery = getEntityManager().createNamedQuery("countryNamesByCode");
userQuery.setParameter("paramIsoCode", isoCode);
return (List<Country>) userQuery.getResultList();
}
}
2. does not work. database is hit every time
@NamedQueries({
@NamedQuery(
name = "getProductsByLanguage",
query = "SELECT NEW de.markets.products.entity.Product(p.id, t.contentText)"
+ " FROM Translations t, Product p"
+ " WHERE t.translationId = p.categoryName"
+ " AND t.languageId =:language",
hints={
@QueryHint(name = QueryHints.QUERY_RESULTS_CACHE, value = HintValues.TRUE)
}
)
})
@Entity
public class Product extends AbstractEntity {
public static List<Product> getAllProductsByLanguage(final int languageID) {
final Query userQuery = getEntityManager().createNamedQuery("getProductsByLanguage");
userQuery.setParameter("language", languageID);
return (List<Product>) userQuery.getResultList();
}