如何解决非复合@EmbeddedId
是否可以/支持在嵌套在内部 (@javax.persistence.Id
) 类中的简单属性(即没有复合类)上使用 @EmbeddedId
或 @Embedded
?
结构如下:
{
"something": {
"id": 123456789,...
},...
},
我的案例不涉及多对任何关系。
我也无法控制上面的类/类型/结构。
我尝试了以下操作:
@Entity
class MyEntity {
@Embedded
Something something;
@Embeddable
class Something {
// @Id
@EmbeddedId
Long id;
...
}
...
}
...以及其他几种变体,但似乎没有任何效果。通常我最终会得到一个关于我的实体没有指定标识符的异常。
我希望 Hibernate 以递归方式遍历 @Embedded
属性并最终检测到嵌套的 @Id/EmbeddedId
,但这似乎并没有发生。
我是否需要用复合 id/class 替换简单的 Long id
?不确定它是否会起作用,但我宁愿避免这种情况。
此外,我想坚持使用 @Access(AccessType.FIELD)
,它取消了在 MyEntity 中直接在某些瞬态属性上使用 @Id
的解决方法,这将指向 MyEntity.Something.Id 字段。
我正在寻找一个干净的解决方案,请不要让映射复杂度更高。
同时,我的次优解决方案根本不将 entity.something.id 视为 @Id
,而是将我自己的 @Id
添加为 entity.id,并在此过程中稍后处理后果.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。