Querydsl在谓词中使用外键

时间:2019-04-15 15:27:51

标签: java hibernate spring-boot spring-data-jpa querydsl

我正在使用QueryDsl根据搜索词动态生成查询谓词。

数据模型如下所示

@Entity
class Person {
    long id;
    String name;
    .
    .
    Company company;
}

 @Entity
 class Company {
     @Id
     long id;
 }

现在,我正在尝试创建一个用于在表中搜索的搜索词。

mapData.entrySet().stream().map(entry -> {
        try {
            if (entry.getValue() != null) {
                SimplePath<T> fieldPath = Expressions.path(entityClass, entry.getKey().toString());
                Field field = entityClass.getField(entry.getKey().toString());
                if (field.getType().getAnnotation(Entity.class) == null ) {
                    SimplePath<?> personFirstName = Expressions.path(field.getType(), fieldPath, field.getName());
                    Expression<?> constant = Expressions.constant(entry.getValue());
                    return Expressions.predicate(Ops.STARTS_WITH, personFirstName, constant);
                } else {
                    //HANDLE FOREIGN KEY
                }
            }
        }catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        return null;
    })

此代码可帮助我为除company之外的所有成员添加条件。我试图找出如何为Company添加条件的条件,在JPA中其列名将为company_id并被称为comapny.id

0 个答案:

没有答案