有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA和序列化行为

基本上,我想让实体中的JPA持久化字段在手动序列化时表现为瞬态

我有一个这样的基本课程:

@Entity
public class Foo implements Serializable{
  @Id
  @GeneratedValue(strategy=GenerationType.TABLE)
  long id;

  String field;

  get/set field;

}

在序列化时,id也被序列化。当我反序列化这个类并将其持久化时,它仍然具有相同的ID,并且(与JPA合并后)在数据库中是相同的实例。虽然这可能是预期的行为,但我希望反序列化对象在反序列化时成为数据库中的新对象

我试图让身份证暂时生效,但这把JPA搞砸了。我尝试的第二件事是在反序列化后将id设置为null。在那之后,坚持有效。但对于许多不同的实体来说,这变得相当乏味,我回到了我最初的问题

有比这更简单的方法吗?重写readObject(...)方法并将id设置为null也不起作用,因为JPA也使用这些方法


共 (1) 个答案