首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate Envers: Audit @CollectionTable字段

Hibernate Envers: Audit @CollectionTable字段
EN

Stack Overflow用户
提问于 2016-10-09 16:35:38
回答 1查看 966关注 0票数 0

我尝试审计具有List<OrderItem>字段的Order类。Order类如下所示:

代码语言:javascript
复制
class Order {
    @Audited
    @ElementCollection(fetch = FetchType.EAGER)
    @CollectionTable(name = "order_order_item", joinColumns = @JoinColumn(name = "order_id"))
    List<OrderItem> items;
}

对于OrderItem类,如下所示:

代码语言:javascript
复制
class OrderItem {
    private Integer quantity;
    private Long itemId;
}

每个订单必须包含唯一的OrderItem (按itemId区分)。

问题是我试图创建有多个OrderItemOrder,每一项都是唯一的,但hibernate抛出异常说:

代码语言:javascript
复制
A different object with the same identifier value was already associated with the session : [order_order_item_AUD#{SETORDINAL=1, REV=DefaultRevisionEntity(id = 16, revisionDate = Oct 9, 2016 1:38:12 PM), Order_id=57, REVTYPE=ADD}]; nested exception is javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [order_order_item_AUD#{SETORDINAL=1, REV=DefaultRevisionEntity(id = 16, revisionDate = Oct 9, 2016 1:38:12 PM), Order_id=57, REVTYPE=ADD}]

我认为问题可能是envers对不同的OrderItem使用相同的标识符,因为envers只看到来自@JoinColumnorder_id,并将其视为标识符。

我不知道如何告诉envers同时使用itemIdorder_id作为修订的标识符,或者可能我误解了这个问题。

请帮帮忙。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-10-10 19:29:19

相反,您可能希望考虑按如下方式进行映射:

代码语言:javascript
复制
@Embeddable
public class OrderItemId implements Serializable {
  private Long orderId;

  private Long itemId;
}

@Entity
public class OrderItem {
  @EmbeddedId
  private OrderItemId id;

  @ManyToOne
  @MapsId("orderId")
  @JoinColumn(name = "order_id")
  private Order order;

  @ManyToOne
  @MapsId("itemId")
  @JoinColumn(name = "item_id")
  private Item item;
}

如果希望保留@ElementCollection映射,则可能需要包含一个@OrderColumn注释,并确保实现了仅使用item_id和order_id值的正确的hashCode/equals方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39941603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档