1

在我的应用程序中,我有一些从 User 类扩展的实体。用户有 firstName 和 lastName 字段。对从 User 扩展的每个实体进行搜索。为了实现搜索,我使用了 Criteria API。当我们谈论相同的参数时,对它们的查询看起来非常相似。所以我决定创建一个通用类来把所有东西都集中在一个地方

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));

}

这是规范生成器:

 public interface SpecificationBuilder<Entity> {
     Specification<Entity> getSpecOfSearchParam(String searchParam);
 }

问题是 Intellij 为 MetaModel.lastName 和 MetaModel.firstName 加了下划线(它说“无法使用 ...User.firstName 解析方法”)。可能是因为不清楚我们期望的 User 类的确切扩展。可能有办法避免这种情况。提前致谢。

4

0 回答 0