java - 应用程序中可以有同一(开放)JPA 实体的多个实例吗?等于不适用于实体实例?

标签 java spring jpa entity openjpa

我们的堆栈:Tomcat 7、Spring 3.1.1、OpenJPA 2.2.0

我遇到了一个问题,根源是比较:

server1.equals(server2);

server1 和 server2 都是实体“Server”的实例:

@Entity
public class Server implements Serializable {
   private long id;
   // getters and setters
}

我必须将比较更改为:

server1.getId().equals(server2.getId());

那个有效,上面的返回 false,即使服务器的 id 相同。 我还检查了两个实例的hashCode,这两个实例确实有不同的hashCode。

为什么我们的应用程序中有同一实体的两个实例?

怎么会发生这种事?数据库中只有一个“服务器”实体。

谢谢!
塞巴斯蒂安

最佳答案

例如,如果您使用不同的实体管理器或不同的事务加载它们,将会有不同的实例。

关于java - 应用程序中可以有同一(开放)JPA 实体的多个实例吗?等于不适用于实体实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13559623/

相关文章:

java - 在 Java 中是否有解析 Json 的通用方法?

java - 用于图像上传/显示的文件系统替代方案

java - OpenJpa 合并分离对象

java - JPA:确保子对象在更新时被替换

java - 从 Java 使用表类型参数调用 OracleDB 过程——DB 总是接收空值而不是值

适用于 Linux 和 Window 的 Java Spring 项目环境属性文件

java - 错误 500 : LocalTransaction rolled-back due to setRollbackOnly

sql - 如何将参数列表传递给存储过程并在 SQL Server 中执行批量插入

spring - 如何发布到 Spring Boot Actuator?

java - 删除 1 年多以前的记录