基于元模型Java的标准api继承
在我的应用程序中,我有一些从用户类扩展而来的实体。用户有firstName和lastName字段。对从用户扩展的每个实体进行搜索。为了实现搜索,我使用了CriteriaAPI。当我们讨论相同的参数时,对它们的查询看起来非常相似。所以我决定创建泛型类,将所有内容集中在一个地方
public abstract class NameSpecificationManager<Entity, SearchDto extends BasicSearchDto, MetaModel extends User_>
extends SpecificationManager<Entity, SearchDto> {
protected final SpecificationBuilder<Entity> entityByFirstName = (final String firstName) ->
(root, query, cb) -> cb.like(root.get(MetaModel.firstName), getParameterPattern(firstName));
protected final SpecificationBuilder<Entity> entityByLastName = (final String lastName) ->
(root, query, cb) -> cb.like(root.get(MetaModel.lastName), getParameterPattern(lastName));
}
以下是SpecificationBuilder:
public interface SpecificationBuilder<Entity> {
Specification<Entity> getSpecOfSearchParam(String searchParam);
}
问题在于元模型。lastName和元模型。firstName用Intellij加下划线(它表示“无法用…User.firstName解析方法”)。可能是因为不清楚我们期望的用户类的确切扩展是什么。也许有办法避免这种情况。提前谢谢
共 (0) 个答案