Eclipse:在持久性单元中没有定义名为"system-uuid"的生成器

cmd*_*tos 14 eclipse hibernate persistence.xml

我有一个maven启用的项目导入到Eclipse中.从Eclipse,我得到一个错误"没有生成器命名"system-uuid"在以下行的system-uuid部分的持久性单元中定义":

@Id @GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(length = 36)
public String getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

项目从命令行正确构建.是什么导致Eclipse生成此错误,我该如何解决?

持久性文件看起来像这样..

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="xxxx"/>
</persistence>
Run Code Online (Sandbox Code Playgroud)

Kar*_*zke 37

您可以通过将"持久性单元中未定义生成器"错误更改为警告,在"查询和生成器"下的"首选项" - >"Java持久性" - >"JPA" - >"错误/警告"下关闭/关闭错误.

这看起来像是Eclipse中Dali的Hibernate Tools扩展中的一个错误.您可以将此报告给Hibernate Tools,或者这可以在更新的版本中修复.

  • 这个答案似乎很老了.我刚刚下载了Eclipse luna,问题仍然存在.我不敢相信这么长时间会有一个bug.这真的是达利的一个错误吗? (5认同)

roe*_*ijn 6

较新版本的 Eclipse 的 JPA 支持似乎取决于注释的顺序。在尝试使用 em 之后,您正在定义生成器。

这将起作用:

@Id
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@GeneratedValue(generator = "system-uuid")
@Column(length = 36)
public String getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

然而,Java 中的注解顺序一定没有意义。所以Karen是对的,这似乎是一个错误。

  • 也不以任何顺序为我工作。项目&gt;清理...(下面建议)在任何一个顺序上都没有帮助。我正在使用 Mars.2 (4.5.2)。 (2认同)

jef*_*eff 6

Eclipse Luna:这似乎有效

Project -> Clean
Run Code Online (Sandbox Code Playgroud)