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

JPA父子关系

尉迟远
2023-03-14

我有一个场景,需要在一种情况下加载所有子值,在另一种情况下加载一些特定的子值。我对这两种情况都使用一个bean,并使用命名查询编写查询。

@namedqueries{
@namedQuery(name="query1") = "select parent from Parent parent",
@namedQuery(name="query2") = "select parent from Parent parent",
}
Class Parent {

@manytomany
@join mentioned my join condition here // 
 List<Child> child ; 

}

Class Child 
{ 
 String A;
 String B;
 String C;

 @manytomany(mappedby = "child")
 List<parent> parent ; 
 }

现在在我的查询2中,我只需要加载字符串A,而不需要加载字符串B和字符串C。我试过使用

"select parent.child .A from Parent parent" as Query 2 

但得到以下错误

 "Attempting to navigate to relation field via multi-valued association and
 jpql doesnt  allow traversal through multi valued relationship. Try join instead"

那么,关于如何继续这方面的任何建议。。

1) Should I have to create a new bean for each Query
2) Or Can we control the child object parameters in specific named queries

共有1个答案

慎旭尧
2023-03-14

当您说“选择父项”(select parent)时,您正在访问一个集合。子级,您不能说选择父级。小孩A根据HQL标准,这是错误的。您需要使用join执行此操作,因为错误消息建议:

select c.A from parent as p join p.child as c

那么,不必为每个查询创建新的bean。

 类似资料:
  • 使用JPA(Hibernate)我试图实现以下关系,并想知道其他人是否对最佳方法有任何建议: 基本上是完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现简单,在数据库中稍微麻烦些! 我确信这一定是常见的事情,但是我很难找到任何示例实现,因为我真的不知道正确的搜索词。 谢谢你的时间!

  • 伪代码: 为什么大多数程序通常不允许这样做(我从未见过)? 程序不能识别出它何时进行了循环并停止执行任务吗? 对于实例: 假设这些对象是3d网格,我们想在x轴上转换对象A 2个单位。通常,父子关系会移动A的任何子级。所以它穿过子树,并用A翻译x轴上的每个子级2个单位。然后它到达树中的对象A,而不是移动它,为什么不让它检查身份,如果身份返回true,然后停止移动东西? 这只是软件开发人员的懒惰吗?

  • 实现一对多关系并选择父项和子项我有一个关系,我想进行查询(选择*) 文件夹。JAVA 作者。JAVA 我的请求: 我得到了这样的结果: 我的代码有什么问题?什么是问题,当我执行查询我得到了这个结果...我想得到这个结果

  • 在@JoinColumn中的一对多关系中,我从子表中设置name,从父表中设置reference column。但是,当我在上面的person类中用@OneToOne定义相同的单向关系时,我必须从person表而不是从name表中设置@JoinColumn名称。 我的问题是为什么这两个连接条件中的定义名称不同,在一个条件中,我必须将该名称设置为来自同一表的PK列名的名称,而在第二个示例中,我必须设

  • 问题内容: 阅读了这篇JPA地图关系实体parentID后,我尝试将其应用于我的代码,但这对我不起作用。 这是我对象中的代码 现在这是我运行的测试 此测试行始终失败。 基于我的关系设置,Hibernate无法检索该子类别,我也不知道为什么。现在我真的很希望这对我来说不是什么愚蠢的事情,因为我会自己开枪(即使是很晚并且很累)。顺便说一下,不要介意代码中的公共变量,我正在使用play!(playfra

  • 在Hibernate文档中,有这样一句话: Hibernate中一对多关联的默认语义与父/子关系的常用语义相比,与复合元素映射的语义要差得多。 我发现这句话很混乱,有人能解释一下它的意思吗?此外,在Best Pratices页面上,您会发现 编写细粒度的类并使用