Java OpenJPA:多个@Embedded与一个@ElementCollection
我正在尝试决定使用哪个注释。你能提出你的意见吗 我现在所拥有的:Java OpenJPA:多个@Embedded与一个@ElementCollection,java,jpa,jpa-2.0,openjpa,Java,Jpa,Jpa 2.0,Openjpa,我正在尝试决定使用哪个注释。你能提出你的意见吗 我现在所拥有的: @Entity public class Balance { @Embedded private Amount amountAtm; @Embedded private Amount amountBranch; @Embedded private Amount amountVault; } @Embeddable public Amount { private BigD
@Entity
public class Balance {
@Embedded
private Amount amountAtm;
@Embedded
private Amount amountBranch;
@Embedded
private Amount amountVault;
}
@Embeddable
public Amount {
private BigDecimal debit;
private BigDecimal credit;
}
我想将其更改为:
@Entity
public class Balance {
@ElementCollection
private Map<AmountType, Amount> amounts;
}
public enum AmountType {
ATM, BRANCH, VAULT;
}
@实体
公共阶级平衡{
@元素集合
私人地图金额;
}
公共枚举数量类型{
ATM、分行、金库;
}
金额将保持不变
这一变化的原因是,余额中的金额在概念上是一个集合。我要么同时显示/更改它们,要么根本不显示/更改。所以,我把他们当作一个群体
问题:
Map getAmounts()
方法(以及相应的setter),那么没有什么可以阻止您添加它并自己实现它:
public Map<AmountType, Amount> getAmounts() {
Map<AmountType, Amount> result = new HashMap<AmountType, Amount>(3);
result.put(AmountType.ATM, amountAtm);
result.put(AmountType.BRANCH, amountBranch);
result.put(AmountType.VAULT, amountVault);
return result;
}
publicmap getAmounts(){
映射结果=新的HashMap(3);
结果.put(AmountType.ATM,amountTM);
结果.put(AmountType.BRANCH,amountBranch);
结果.put(AmountType.VAULT,amountVault);
返回结果;
}
JPA(1或2或2.1)没有此类@EmbeddedCollection注释,也不在OpenJPA文档中。也许澄清一下你的意思…@DataNucleus你是对的,我指的是\@ElementCollection注释。此外,我已将问题完全改写,使之更清楚。谢谢你的反馈。谢谢你的回复,JB。我希望能够在这些对象之间循环。。。是的,我可以实现您描述的方法,但我认为使用@ElementCollection将是一个更干净的解决方案,而且是“正确的方法”。我的意思是,如果这些对象在概念上是一个集合,这难道不足以将它们映射为一个集合吗?是的,你可能是对的。但是,他们可能也应该在自己的桌子上。