2009-10-15 37 views
1

由于某些限制,客户端要求我不能使用增量“id”主键,只允许复合主键。我不能使用JPA注释来实现实体回调。因此,我如何知道实体将被插入或更新? 非常感谢。如何知道实体将要插入或更新

+1

是否有必要知道它将要插入或更新?合并应该根据是否附加来执行任何操作。 – 2009-10-15 01:50:46

+0

+1与@kaleb。你的用例是什么?为什么你需要知道它是创建还是删除。你为什么不真正知道自己在做什么? – 2009-10-15 14:27:18

+0

作为一个平台设计,假设有一个DefaultManager接口,它有一个saveOrUpdate()方法,它将一个POJO作为参数。因此DefaultManager是每个模型或逻辑子类的超类。所有子类都将使用saveOrUpdate(实体实体)进行插入或更新,即使我有一个saveOrUpdate(列表实体)方法进行批量更新。在两个saveOrUpdate方法中,DefaultManager将标记每个实体的创建时间或更新时间。这就是为什么我需要知道每个实体的状态。 – Matt 2009-10-16 12:59:34

回答

1

使用版本列

@Version 
public Integer getVersion() { 
    return this.version; 
} 

无论是空,因此它是其他插入它是一个更新。

问候,

+0

非常感谢。多年来我一直没有使用过Hibernate。从2.1.7开始,它发生了很大的变化,我几乎忘记了所有基本的东西。 – Matt 2009-10-16 13:07:02

+1

或者我将使用Hibernate EntityManager而不是Spring的HibernateTemplate,因此我可以使用@PrePersist和@PreUpdate来了解状态。 – Matt 2009-10-16 13:13:24

+0

随意问任何你想要的东西。我有很多ORM相关的答案。问候。 – 2009-10-16 13:24:59