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

在具有NamedQuery的jointable上查找继承的实体

孙琨
2023-03-14

如何使用NamedQuery在jointable上查找实体?我有一个抽象的父类/实体,带有@heritance(strategy=InheritanceType.JOINED)和两个子类/子实体。因此,在数据库中我有一个父表(SDR)和两个子表(xSdrs和ySdrs)。还有另一个表保留,它与表SDR有多对多关系。这就是为什么我在保留和特别提款权之间创建了一个连接表
我打算在父实体Sdr中使用NamedQuery,以便能够在jointable上分别找到XSdr或YSdr的记录/实体的键。

在课堂上Sdr我有:

@NamedQuery(name="Sdr.findBySdrId", query="SELECT s FROM Sdr s "
            + "INNER JOIN s.reservations res WHERE res.sdrs = :transactionId")

@ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="sdrs_has_reservations",  
        joinColumns = {
            @JoinColumn(name="sdrs_id", referencedColumnName="sdrId", nullable=false)
        }, inverseJoinColumns={
            @JoinColumn(name="reservations_id", referencedColumnName="reservationId", nullable=false)
        })
private List<Reservation<T>> reservations;

但是,当然,这会将transactionId设置为reservationId,从而导致失败。

相反,我有:

@ManyToMany(mappedBy="reservations", fetch=FetchType.EAGER)
private List<Sdr<T>> sdrs;

那么,如何在类/实体Sdr中实现命名查询才能获得正确的Sdr(及其相关保留),并将Sdr ID设置为查询参数

共有1个答案

平元明
2023-03-14

从保留中选择sdr加入r.sdr sdr sdr WHERE sdr。id=:id

 类似资料:
  • 问题内容: 我有一个实体类和一个基于该实体的子类: 和 我需要发出仅在基类(A)上使用存储过程的本机查询。如果我尝试如下: 我收到有关“在ResultSet中未找到clazz_列”的错误。我假设JPA提供程序添加了此列,以便区分基类和扩展类。我可以通过显式添加clazz列和子类中的所有字段来解决此问题: 其中“ prop1”和“ prop2”是子类B的属性。但是,这似乎是不必要的修改,并且如果子类

  • 我对平台API有问题(https://api-platform.com/)当我有一个从另一个实体继承的实体时。例如,从User实体继承的Worker实体。当我转到Platform API文档时,所有Worker属性都显示在User类中 这是一个比解释更好的模式。这是我的两个实体和问题文档的结果 这就是问题所在。我们看到 Worker 子类的属性出现在 User 类的模型中。并且当我测试发送 POS

  • 以此作为我的基点:https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/ 我有一个名为 Attendance 的实体,它有一个 emebedid AttendacneId,它有两列 lectureId (strin

  • 问题内容: 我在通用表“ Sample”上构建查询,并且有几种类型从该表“ SampleOne”,“ SampleTwo”继承。我需要类似的查询: 其中type是表的鉴别值。是否可以通过任何方式(并且避免创建实体特定的查询,每个SampleOne,SampleTwo …等等) 我非常感谢您对本主题的任何投入, 亲切的问候,P。 问题答案: 在JPA 2.0中,您可以使用表达式(尽管当前它不适用于H

  • 你更喜欢/建议哪一个?

  • 在我的Spring/MySql系统中,我有一些Jpa实体,它们通过父关系上的joinTable在OneToMany关系中连接。在这种情况下,一个帖子有很多评论。 如果我尝试删除Post实体,问题是生成的SQL试图删除仍在连接表中的注释,从而触发外键冲突。 什么是正确的方法: 删除连接表项 删除连接表左侧父关系实体 删除连接表右侧子关系实体 要记住的一些事情: 还有其他实体通过oneTo多项关系拥有