如何让@ManyToOne 与 Spring Lemon 一起工作?

How to make @ManyToOne work with Spring Lemon?

我有一个现有的 Spring MVC + Spring Security + Thymeleaf 项目。我的目的是向其中添加 Spring Lemon 功能。

我关注了 Spring Lemon Getting Started guide,并构建了一个由 Lemon 驱动的项目。它运行成功。

现在我正在尝试将我的实体复制到 Lemon 项目中。

一切顺利,直到我修改我的实体以扩展 VersionedEntity,如文档中所述。 然后我得到这个错误:

![错误]http://i.stack.imgur.com/snz86.png

看起来 VersionedEntity 与我的 ManyToOne 关系不兼容。当我删除这些关系时,问题就消失了。

如何获取使用这些 JPA 注释生成的表?

VersionedEntity 是支持版本控制的轻量级 class,它扩展了 LemonEntity,后者又扩展了 Spring Data JPA 的 AbstractAuditable。因此,为了查明问题出在哪里,我认为您可以尝试直接从 LemonEntityAbstractAuditable 扩展 classes,然后查看问题是否仍然存在。

让我们看看您发现了什么。如果即使您的实体扩展 AbstractAuditable 也会出现问题,可能 AbstractAuditable@ManyToOne 不兼容(假设您的代码没问题)。在那种情况下,我认为与 Spring Data JPA 人员一起提出它(向该问题添加 spring-data-jpa 标签或使用该标签创建一个单独的问题)会有所帮助。

即使扩展 AbstractAuditable 也没有解决问题。在 Sanjay 的帮助下,我了解到当您扩展 VersionedEntity 或 LemonEntity 时,您不再需要实体 class 中的 Id 字段。然后我删除了它,它起作用了。