java在JPA中使用带有连接ID的字符串列值作为外键
我的数据库的一列是一个字符串,它具有非规范化的ID,如"3,7,8"
。我无法更改数据库的遗留逻辑
我目前正在使用@Converter
将字段转换为List<Integer>
,但我想进行第二次传递,以便实体直接定义:
@Column
@OneToMany
List<ForeignEntity>
有没有什么本地方法可以告诉JPA进行第二次转换
我知道我可以在转换器中解析,但我正在寻找一种更简洁的方法,以避免在数据转换器中使用查询,并从标准JPA注释和机制中获益
事实上,我的外国实体只是一张地图,如果有人能给我指出一个更好的解决方案,那么我就可以更复杂地直接解决这个问题
id | key | value
----------------
3 | A | ...
3 | B | ...
3 | C | ...
7 | A | ...
7 | B | ...
7 | C | ...
...
进入
@Column
@OneToMany
List<Map<String,String>> resolvedValues; // Contains {Map[A,B,C]{... , ..., ...}, Map[A,B,C]{... , ..., ...}, ... }
我会很高兴的
# 1 楼答案
您可以使用JPA的-
javax.persistence.AttributeConverter
接口通过重写其方法:
这是规格-