我需要使用基本密钥和实体值来持久保存地图。这运行,如果我不尝试两次添加相同的第二个实体:
@ManyToMany
@JoinTable(name="THIRD_TABLE")
@MapKeyColumn(name="INTEGER_COLUMN", table="THIRD_TABLE")
private Map<Integer, SecondEntity> secondEntities = new HashMap<>();
但是如果我尝试(year1:secondE_1,year2:secondE_1)我的应用程序会抛出这个:
java.sql.SQLException: Violation of unique constraint SYS_PK_294:
duplicate value(s) for column(s) FIRSTENTITY_ID,SECONDENTITY_ID in statement [INSERT INTO COVERANALYSIS_EXPENSERECORDSETS (secondentity_id, firstentity_id, INTEGER_COLUMN) VALUES (?, ?, ?)]
Error Code: -104
似乎mapkey没有按原样使用。我已尝试过其他一些注释和无休止的谷歌搜索,但似乎没有任何效果。
请帮帮我。
答案 0 :(得分:0)
答案 1 :(得分:0)
最后我在其间安装了一个交叉帮助对象。
FirstEntity逆映射列表:
@OneToMany(mappedBy="firstEntity", cascade = CascadeType.ALL)
private List<SecondEntityJunction> secondEntities;
SecondEntityJunction包含父键,年份和第二个实体FK:
@ManyToOne
private FirstEntity firstEntity;
private int year;
private SecondEntity secondEntity;
是的。