spring - @OneToMany 其中 mappedBy 是 @Any
问题描述
我有一个由 interface 表示的多态关系commentable
。评论可以针对帖子以及其他评论。
我能够代表该关系的评论方,检索目标帖子,但我无法代表帖子方 - 例如,我无法从帖子中获取评论。
我将@Any 用于多态性,但如果这不是正确的方法,那么我会很乐意改变方向。
如果我只有评论代码,一切正常
// Comment.java
@Any(
metaDef = "CommentableMetaDef",
metaColumn = @Column(name = "commentable_entity")
)
@JoinColumn(name = "commentable_id")
private Commentable target;
// Post.java
@OneToMany(mappedBy = "target", targetEntity = Comment.class)
private Set<Comment> comments;
^^ 这打破了。
如果它是相关的,这是我metaDef
在 package-info.java的内部
// package-info.java
@AnyMetaDef(name = "CommentableMetaDef", metaType = "string", idType = "int",
metaValues = {
@MetaValue(value = "COM", targetEntity = Comment.class),
@MetaValue(value = "POS", targetEntity = Post.class)
}
)
@AnyMetaDef(name = "ReactableMetaDef", metaType = "string", idType = "int",
metaValues = {
@MetaValue(value = "COM", targetEntity = Comment.class),
@MetaValue(value = "POS", targetEntity = Post.class)
}
)
解决方案
推荐阅读
- spring - In-Memory 和 MySQL DB 的不同持久性行为
- c# - 当我的 Access DB 被超过 1 个用户使用时,ExecuteNonQuery() 非常慢
- java - 执行迁移的配置不正确
- php - WooCommerce $product->get_stock_quantity(); 打破购物车页面
- python - 如何从 group by 中获取第一列?蟒蛇熊猫
- batch-file - 如何检查批处理文件中是否存在目录?
- python - 列表内容的长度,里面有列表
- android - 通过 Gmail 添加帐户 Android 登录时出错
- javascript - Angularjs Material $mdDialog 控制器在特定计算机上不起作用
- angular - 如何按名称对列表进行排序?