当前位置: 首页 > 知识库问答 >
问题:

java-jpa-specification:如何在属于嵌套对象的字段上创建标准/规范?

颛孙高义
2023-03-14

我在我的项目中使用了JDK1.8、hibernate和jpa。并使用规范/条件构建我的搜索查询。

我有一个a类(一个hibernate实体),它有B类作为属性。所以,粗略地说,它看起来像:

@Entity
class A {
     Long id;  
     String comment;

     @OneToOne
     B b;
}
@Entity
class B {
    
     Long id;
     String type;
}


 
public interface ARepository extends PagingAndSortingRepository<A, Integer>,
                                                                    JpaSpecificationExecutor<A> {
select * from A a left join B b on a.b_id = b.id 
   where b.type='final' and a.comment='blah';
public Specification<A> getSpecification() {

return (itemRoot, query, criteriaBuilder) -> {
    .........
    List<Predicate> partialQueries = new ArrayList<>();

    partialQueries.add(criteriaBuilder.equal(itemRoot.get("b.type"), "final"));
    partialQueries.add(criteriaBuilder.equal(itemRoot.get("comment"), "blah"));

    //Other queries to be added...

    return   criteriaBuilder.and(partialQueries.toArray(new Predicate[0]));
  };
}
Unable to locate Attribute  with the the given name [b.type] on this ManagedType [com.something.domain.A]

共有1个答案

萧永长
2023-03-14

如果要筛选嵌套对象。你可以写

itemRoot.get("NestedTableName").get("nestedfieldname")

In your case - itemRoot.get("B").get("type")
 类似资料:
  • 本文向大家介绍PHP 中如何创建嵌套 JSON 对象,包括了PHP 中如何创建嵌套 JSON 对象的使用技巧和注意事项,需要的朋友参考一下 JSON结构可以使用以下代码创建-

  • 问题内容: 我不太使用php,并且在对象创建方面有些模糊。我需要发出一个发送json的网络服务请求,我想我已经覆盖了那部分。在提交数据之前,我需要创建一个嵌套对象。根据我对基于ecma的脚本语言的经验,我认为这是微不足道的,但是我发现该语法难以导航。我要创建的对象如下。 我已经看到了许多平面对象的示例,但是还没有找到嵌套对象的最小示例。上面对象的php语法是什么?这是在PHP中做的不寻常的事情吗?

  • 问题内容: 我需要有关为嵌套对象创建hibernate条件的帮助。例如 : 现在,我正在尝试从服务类(officeService)中提取与某个区域匹配的所有办事处,如下所示: 总是出现异常:“ org.hibernate.QueryException:无法解析属性:”我需要找出正确的方法来创建此查询的条件。有人可以帮忙吗? 问题答案: 请参阅用户指南的 “ 标准”部分下的“查询关联” :

  • 问题内容: 我有2个CSV文件:“数据”和“映射”: ‘映射’文件有4列:,,,和。填充所有四个列。 “数据”文件具有这些相同的列,其中填充了列,而其他三列为空白。 我希望我的Python代码来打开这两个文件并为每个数据文件,它的映射,以及从映射文件中值。 我知道只有2列存在时才需要使用dict(需要映射1列),但是当需要映射3列时我不知道如何实现。 以下是我尝试完成的映射的代码: 它返回。 经过

  • 我用的是angular 5。我尝试在下面的html数组中使用嵌套循环 对象: HTML: 我得到以下解析错误: 我在app.module.ts导入了BrowserModul和Common Modul,这样用户就可以将一周中的任何一天的时间表复制到一周的其余时间。 编辑:我的代码中的实际超文本标记语言:

  • 问题内容: 我有一个与此对象相似的JSON对象: 现在,我想将“ name”和“ mother”解析为该结构: 我想用struct标签指定JSON字段名称,但是我不知道该用什么作为标签,因为它不是我感兴趣的顶级对象。我在软件包文档中也没有找到关于此的任何内容博客文章JSON和Go。我还测试,和。 问题答案: 遗憾的是,与包不同,该包没有提供访问嵌套值的方法。您需要创建一个单独的Parents结构或