|   |      1 
                                  1
                             在第一次尝试中,您在试图用作外键的字段上有了排序注释,但没有设置Notifietor.id字段。如果您希望这样做,可以创建一个从Notifier到Notification的映射,以便将其“ID”字段用作外键。 不幸的是,您在第二次尝试中也错误地使用了@PrimaryKeyJoinColumn注释。@PrimaryKeyJoinColumn用于指定映射中指定的数据库字段由标记为@Id的字段控制和设置,本质上使映射可插入/可更新=false。 要匹配您似乎想要的结构,您应该尝试: 这并不完全符合您的需要,因为上面的示例要求您在引用的Notification.id中的值可用时(post-persist/flush)自行设置Notification.id值。 如果您使用的是JPA 2.0,则可以在Notifier类中使用@MapsId,而不是指定联接列,以便在对象图持久化时,JPA在托管实体中自动为您设置Notifietor.id字段值: 正如您所指出的,您实际上不需要模型中的Notifietor.notification和Notifietor.id值,但如果您需要Notifietor的值,则至少需要Notifietor.notification。来自通知的“NOTIFICATION_ID”字段。JPA 2.0允许您删除Notifietor.id,只需使用Notifietor.notification关系作为实体id: 这允许您仍然使用UUID值进行标识查找。FetchJoins等可以确保始终获取关系,但缺点是希望使用ID值的JPQL需要使用notificationtor.notification.ID来访问它。 |