这是我昨天问的这个问题的延续。在浏览了各种资源并咨询了人们之后,我找不到任何支持 API 的 JPA 注释,用于映射测量单位。所以,我决定自己去创造它。
基于Martin Fowler在他的著作《分析模式:可重用对象模型》中描述的各种观察和测量模式,我尝试创建一个基本实现来满足我的需求。我创建了两个实体,并且,如下所示: -Unit
Quantity
单位实体:-
@Entity
@Table(name = "unit")
public class Unit {
@Id
@Column(name = "symbol")
private String symbol;
@Column(name = "name")
private String name;
@Column(name = "multiplier")
private Number multiplier;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "symbol")
private Unit baseUnit;
public Unit() {
}
public Unit(String symbol, String name, Number multiplier, Unit baseUnit) {
this.symbol = symbol;
this.name = name;
this.multiplier = multiplier;
this.baseUnit = baseUnit;
}
/** Getters and Setters **/
}
数量实体:-
@Entity
@Table(name = "quantity")
public class Quantity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int quantityId;
private Number amount;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "unit")
private Unit unit;
public Quantity() {
}
public Quantity(Number amount, Unit unit) {
this.amount = amount;
this.unit = unit;
}
/** Getters and Setters **/
}
在Item
实体中,我有一个Quantity
实体的引用,代表我的unitOfIssue
and unitOfPurchase
。然后,无论我要处理一些数量,我都会有这个Quantity
参考。
现在,这是我现在面临的问题。由于Quantity
这里的课程将是一个entity
. 因此,我们必须将其映射到DB Table。所以,这里需要注意的是,每次我想添加一些数量或更新数量时,都会先在Quantity
表格中输入一个条目,然后在Item
表格中更新它。我想,问题很清楚。我们将在Quantity
表格中输入大量条目,这清楚地表明了一个糟糕的设计。
有人可以对我在 JPA 中实现此模式时的方法以及我有哪些选择提供见解吗?我该如何解决这个问题?