0
私はJPAマッピングの初心者です。私はすべての製品グループ/コストグループの組み合わせの値を指定する単純なエンティティ(基本的に2次元行列)を持っています。JPA内の既存のコネクタテーブルからデータをロード
@Entity
public class CostDistribution {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@NotNull
@OneToOne
private ProductGroup productGroup;
@NotNull
@OneToOne
private CostGroup costGroup;
private Long value;
}
今私は(すなわちproduct_group_idは、現在の製品グループのIDに等しいすべてのCostDistributionレコードをロードする)ProductGroupがロードされている。この行列の関連する列への読み取り専用アクセスを取得したいのですが。私はこれを行う方法を理解することはできません。
@ElementCollection
@CollectionTable(name="cost_distribution", [email protected](name="product_group_id"))
が、私は例外を取得:これは私が試したものですSame physical table name [cost_distribution] references several logical table names: [CostDistribution], [cost_distribution]
私はここで何を誤解していますか?行列から関連データをロードする
@Entity
public class ProductGroup {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(length=50)
@NotNull
@Size(max=50)
private String name;
@???
private List<CostDistribution> costDistribution;
}
そのマッピングが何を意味するのかわかりません。これが1-N bidir(ProductGroup -CostDistribution)の場合、それは '@ OneToMany'でなければなりません。要素がエンティティでない場合にのみ '@ ElementCollection'を使用します。すべてのJPAドキュメントは、 –
ProductGroupとCostGroupが単純なテーブルであり、基本的にIDと名前であることを説明する必要があります。 CostDistributionは、ProductGroupとCostGroupの各組み合わせに値をマッピングします。構造は 'product_group_id、cost_group_id、value'です。 – Arthur