昨日の質問の続きです。さまざまなリソースを調べて人々に相談した後、測定単位をマッピングするための API をサポートする JPA アノテーションを見つけることができませんでした。それで、私はそれを自分で作成することにしました。
Martin Fowlerが著書「Analysis Patterns: Reusable Object Models」で説明している観察と測定に関するさまざまなパターンに基づいて、自分のニーズを満たす基本的な実装を作成しようとしました。以下のように、2 つのエンティティと を作成しました。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
unitOfPurchase
Quantity
さて、ここで私が今直面している問題があります。ここのQuantity
クラスは. entity
したがって、それをDB Tableにマップする必要があります。したがって、ここでの注意点は、数量を追加したり数量を更新したりするたびに、Quantity
最初にテーブルにエントリが追加され、次にテーブル内で更新されるということItem
です。問題はかなり明確だと思います。表に大きなエントリがありQuantity
、これは明らかに設計が悪いことを示しています。
JPAでこのパターンを実装する際に、誰かがアプローチと私が持っているオプションについて洞察を与えることができますか? そして、どうすれば問題を解決できますか?