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

如何确定是否从数据库读取了JPA实体?

顾昊穹
2023-03-14

有没有办法知道实体是否是从数据库中读取的?

这个问题与如何知道一个分离的JPA实体是否已经被持久化有关?。但是检查其主键的变通方法没有回答我的问题。对于从导入文件中读取主键的实体来说,它是不起作用的。

将问题引申如下:

JPA实现如何确定是否要插入或更新实体?

共有2个答案

戚衡
2023-03-14

要知道Entity实例当前是否由给定的EntityManager实例管理,您可以使用MyEntityManager.contains(myEntity)方法,即使我认为大多数实现都是基于主键状态的(JB Nizet完全正确),它也可以为您提供帮助。

请注意,返回false并不断言数据库中不存在实体。这只是检查实体是否被管理,它可能来自数据库并被分离或被另一个EntityManager实例检索。

扶开诚
2023-03-14

Hibernate使用@version(用于乐观锁定)注释的字段的值(如果存在)来判断实体是瞬态的还是分离的。你也可以这么做。

否则,不,没有办法。POJO就是POJO。如果不存在@version字段,则Hibernate使用主键的值。

 类似资料:
  • 我想知道是否有一种方法可以确定在数据库上启用了PostGis。 我试图用我的开发机器复制我的正式服,我不确定我的开发机器上的数据库是否启用了PostGIS或postgis_topology或两者兼而有之。 我试着四处寻找解决方案,但什么也想不出。 这方面的任何建议都会有帮助。

  • 我将使用Apache Camel编写一个CRUD应用程序,非常像下面的示例:http://java.dzone.com/articles/rest-apache-camel 但我想使用JPA,而不仅仅是JDBC。 我看过Camel JPA组件,认为我可以使用它。但要从数据库中读取数据,它需要我定义一个消费者endpoint。 我想从JDBC示例中执行以下操作: 即调用JPA组件作为生产者。 这可能

  • 我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题

  • 我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(

  • 我正在集成cxf webservices,没有spring,消息是签名的。作为一个指南,我已经使用了本教程CXF安全性。我想在数据库中存储x509证书或密钥库。 我已经重写了WSS4JOUTInterceptor.LoadCryptoFromPropertiesFile方法。 但是这里有几个问题: 1。有一个错误像