【发布时间】:2013-11-18 05:04:34
【问题描述】:
我在 Hibernate 中遇到了一个奇怪的问题。在多线程环境中操作,当尝试插入其中一个表时,会在表中获取重复条目。只有主键不同,其余所有字段都完全重复。
使用 Hibernate + Oracle 并使用 Spring - HibernateTemplate 对象。
这是我的 BO 类的相关部分,下面给出了保存对象的代码。不使用任何瞬态字段。
查看过与此相关的其他帖子,但没有一篇能解决问题的根本原因。我不想在 db 表上引入任何约束/唯一索引。
@Entity
@Table(name="ADIRECIPIENTINTERACTION")
@Lazy(value = true)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@GenericGenerator(name="recipientInteractionSeq", strategy = "native", parameters =
{ @Parameter(name="sequence", value="SEQiRecipientInteractId")})
public class RecipientInteractionBO extends BusinessObject{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "recipientInteractionSeq", strategy = GenerationType.AUTO)
@Column(name="IRECIPIENTINTERACTIONID")
private long lId; ....
这是用于保存 BO 的代码。
-----------------------------------------------------
RecipientInteractionBO recInt = (RecipientInteractionBO) objectPS
.getUniqueResult(detachedCriteria);
if (recInt == null) {
recInt = new RecipientInteractionBO();
....
hibernateTemplateObj.insertObject(recInt);
} else {
...
hibernateTemplateObj.saveOrUpdate(recInt);
}
如果需要任何其他详细信息,请告诉我。
【问题讨论】:
-
你遇到的问题是不是只在多线程环境下才能看到?
-
是的,这仅在多线程环境中。
标签: java spring hibernate jdbc