【发布时间】:2018-01-10 09:00:46
【问题描述】:
使用的技术: Spring Boot、Spring Data JPA。
问题摘要:我有一个用例来更新 order_tracking 表,当 purchase_order 表中发生任何状态更改时
用户实体:
@Entity
@Access(AccessType.FIELD)
@Table(name = "USER")
public class User extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(length = 28)
@GeneratedValue(generator = "USER")
@SequenceGenerator(name = "USER", sequenceName = "USER")
@Access(AccessType.PROPERTY)
private Long id;
@Column(unique = true)
private String email;
private String firstName;
private String lastName;
}
用户表:
id email_id first_name last_name
------------------------------------------
101 test@eg.com Test Example
采购订单实体:
@Entity
@Access(AccessType.FIELD)
@Table(name = "PURCHASE_ORDER")
public class PurchaseOrder extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(length = 28)
@GeneratedValue(generator = "PURCHASE_ORDER")
@SequenceGenerator(name = "PURCHASE_ORDER", sequenceName = "PURCHASE_ORDER")
@Access(AccessType.PROPERTY)
private Long id;
private Long userId;
private String trackingNumber;
private String status;
}
采购订单表:
id user_id tracking_number status
-------------------------------------------
101 101 1001 DELIVERED
对于每个活动,状态将像这样在 order_tracking 表中更新
订单跟踪表:
id order_id old_status new_status date
-----------------------------------------------------------------
1 101 NULL CREATED 2017-07-14 10:08:10
2 101 CREATED REQUESTED 2017-07-14 22:08:10
3 101 REQUESTED IN_TRANSIT 2017-07-15 12:08:10
4 101 IN_TRANSIT DELIVERED 2017-07-15 22:18:10
当 purchase_order 表中的任何状态发生变化时,order_tracking 表需要更新新旧状态。
为此,我得到了建议here
但是,我的用例是在 purchase_order 表中的任何状态发生变化时更新 order_tracking 表。
任何人都可以帮助我实现这一目标的最佳方法。
【问题讨论】:
-
public void setStatus(String status) { if (!this.status.equalsIgnoreCase(status) { this.history.add(new OrderTracking(this, this.status, status); } this.status = status; }.
标签: spring hibernate spring-boot spring-data-jpa hibernate-envers