我在表格ReleaseNote
中保存了一个班级RELEASE_NOTES
,并在RELEASE_NOTE_USER_READ
和RELEASE_NOTE_ID
列中保存了一个表USER_ID
,我要保存哪些用户已经阅读过发行版注释,所以我不会再显示它了。
由于我们使用的是微服务架构,我在微服务中没有用户对象,也不想添加用户对象。虽然向ReleaseNote添加字段usersRead不会有问题,该ReleaseNote包含已读取releaseNote的所有用户的userId。
我需要执行两项操作:
SELECT * FROM RELEASE_NOTES WHERE ID NOT IN (SELECT RELEASE_NOTE_ID FROM RELEASE_NOTE_USER_READ WHERE USER_ID = :userId)
如何使用EntityManager
或Hibernate特定功能实现此目的?
答案 0 :(得分:0)
自己找到解决方案。添加字段将usersRead设置为ReleaseNote并注释如下:
@ElementCollection
@CollectionTable(name = "RELEASE_NOTES_USER_READ",
joinColumns = @JoinColumn(name = "RELEASE_NOTE_ID"))
@Column(name = "USER_ID", table = "RELEASE_NOTES_USER_READ")
private Set<Integer> usersRead = new HashSet<>();