【问题标题】:How to use subgraph in spring-data(with hibernate)?如何在 spring-data 中使用子图(使用休眠)?
【发布时间】:2015-11-14 08:44:58
【问题描述】:

我正在通过 spring data 使用 spring boot 1.2.5 和 Hibernate 4.3.10,我编写了下面的代码。
我想使用子图,以便在获取名为“content.search”的实体图时可以检索数据。 这是我的代码。

@NamedEntityGraphs({@NamedEntityGraph(name = "content.search",
 includeAllAttributes=true,
attributeNodes = {
    @NamedAttributeNode("mstItem")
   ,@NamedAttributeNode(value="itemTypeGraph",subgraph="itemTypeGraph") 
    }, subgraphs = {@NamedSubgraph(name = "itemTypeGraph",
    attributeNodes = {@NamedAttributeNode("mstItemType")
    ,@NamedAttributeNode("mstItemName")
      }
    )
  }
)}) 
public class Content implements java.io.Serializable { ... }

当我指定此行时,它会产生如下错误。(没有此行,它可以正常工作,但无法将子图中的数据检索为 EAGER 类型(稍后可以检索为 LAZY)

,@NamedAttributeNode(value="itemTypeGraph",subgraph="itemTypeGraph")

这是我遇到的错误。

[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: 调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException:无法找到属性 此 ManagedType 上的给定名称 [itemTypeGraph] [com.example.domain.Content]

从另一个问题来看,这个错误似乎在hibernate 4.3.9或更高版本之前修复了,但是我仍然遇到这个错误并且无法在子图中获取数据...为什么找不到itemTypeGraph?我应该如何更改代码?

【问题讨论】:

  • 我怀疑该错误尚未修复或...我的代码有问题。
  • 任何人都可以使用 spring-data 的 subgraph 函数吗?如果是这样,我想看看这个程序......

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


【解决方案1】:

子图必须在它应该应用到的属性节点上定义。

所以正确的定义应该是这样的:

@NamedEntityGraph(name = "content.search", includeAllAttributes=true,
    attributeNodes = {
        @NamedAttributeNode("mstItem", subgraph = "itemTypeGraph") 
    }, subgraphs = {
        @NamedSubgraph(name = "itemTypeGraph", attributeNodes = {
            @NamedAttributeNode("mstItemType"), @NamedAttributeNode("mstItemName")
        })
    })
public class Content implements java.io.Serializable { ... }

【讨论】:

    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多