0
我在JPA映射初學者。我有一個簡單的實體(本質上是一個2D矩陣),爲每個產品組/成本組合指定一個值。現在加載數據在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;
}
我想獲得只讀訪問時ProductGroup裝入此矩陣的相應列(即加載所有CostDistribution記錄中,其中product_group_id等於當前產品組的ID)。我無法弄清楚如何做到這一點。這是我的嘗試:
@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