当前位置: 首页 > 面试题库 >

JPA EntityManager的find方法返回代理

许永年
2023-03-14
问题内容

我有两个实体。一个继承自另一个。

例:

@Entity
@Table(name = "vehicle")
@Inheritance(strategy = InheritanceType.JOINED)
public class VehicleEntity {
    //id, etc., all reference fetch type is LAZY
}

@Entity
@Table(name = "car")
public class CarEntity extends VehicleEntity {
    //special parameters, all reference fetch type is LAZY
}

当我在EntityManager上使用现有汽车ID调用find()时,如下所示:

VehicleEntity vehicleEntity = entityManager.find(VehicleEntity.class, carID);

我得到了一个代理对象,但是我需要访问CarEntity类的特殊方法,因为我想设置一些新参数。

有人可以帮我吗?

当然,这只是一个示例问题。更具体地说:在调用find之后,我正在检查返回对象的实例,如果它是“
CarEntity”,则我设置参数,否则,我什么也不做。除了“
CarEntity”之外,我还有更多的继承类,并且执行与以前相同的过程。我知道我可以通过在特定对象类上使用“查找”来解决此问题,但是随后我不得不多次调用“查找”,当我寻找任何“
VehicleEntity”时,我总是对实际对象感兴趣,因此最好的办法是全球解决方案。


问题答案:

我了解的是,由于您正在获取代理对象,该对象应该是VehicleEntity类型,并且该代理对象中的目标对象应该是CarEntity。

因此,在我看来,您可以取消代理对象的代理,这样您就可以获取实际的对象,即CarEntity。

然后,您可以呼叫CarEntity的特殊成员。

我已经找到了链接,该链接将以通用方式代理代理对象(因为您有很多继承的类)

希望对您有帮助。



 类似资料:
  • 问题内容: 我有以下代码: … 循环显示“ et al”,但对m.matches()的调用返回false。而且m.groupCount()返回2。有关发生了什么的任何帮助? 问题答案: 但是对m.matches()的调用返回false。 这是因为要求您将完整的输入与正则表达式匹配。 从Javadoc: 布尔布尔Match() 尝试根据图案匹配整个区域。如果匹配成功,则可以通过开始,结束和分组方法获

  • 问题内容: 我能找到的所有带有猫鼬结果的页面都可以做到这一点: 如何从查询中返回结果,更像这样? 这样我就可以在页面上发布多个结果? 喜欢: 能做到吗? 问题答案: 您正在尝试强制执行同步范例。就是行不通。node.js是单线程的,大部分情况下- 完成io后,便产生了执行上下文。信令通过回调进行管理。这意味着您具有嵌套的回调,命名函数或流控制库,以使外观看起来更好。 https://github.

  • 问题内容: 因此,我使用猫鼬已经有一段时间了,我发现确实发生了一些很奇怪的事情。如果有人能启发我,那就太好了。 问题是,当使用猫鼬的.find()方法时,作为响应获得的对象充满了我不知道它来自何处的属性(我猜它们是内置属性,但无论如何),我只想通过I.select()属性进行迭代。得到它了?没有?好…解释得更好: 我声明了架构和模型: 然后,我想查找一个名称为John的文档,并检索除“名称”字段以

  • 查询多条数据使用Find方法,Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件struct的指针。 1) 传入Slice用于返回数据 everyone := make([]Userinfo, 0) err := engine.Find(&everyone) pEveryOne := make([]*Userinfo, 0) err

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 问题内容: 我有一个使用名为Todo的模型的路由设置,如下所示: 但是,todos.length始终为0,因为它找不到任何结果。当我跑步时: 我确定我已连接到同一数据库。我可以在mongod控制台中看到连接。我的连接位于config / db.js文件中: 我的server.js中的连接如下: 在Mongo Shell中,我得到1个结果。我期望此结果将由find查询返回。有什么我想念的吗?我正在使