基本上,我想让我的实体中的 JPA 持久字段表现得就像它在手动序列化时是瞬态的
我有一个像这样的基本课程:
@Entity
public class Foo implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
long id;
String field;
get/set field;
}
在序列化时,id 也被序列化。当我反序列化此类并将其持久化时,它仍然具有相同的 ID,并且(在与 JPA 合并后)是数据库中的相同实例。虽然这可能是预期的行为,但我希望反序列化对象成为数据库中反序列化的新对象。
我试图使 id 瞬态,但这弄乱了 JPA。我尝试的第二件事是在反序列化后将 id 设置为 null。之后,坚持工作。但这对于许多不同的实体来说变得相当乏味,我回到我原来的问题。
还有比这更简单的方法吗?覆盖该readObject(...)
方法并将 id 设置为 null 也不起作用,因为 JPA 也使用这些方法。