Eclipse:没有名为“的生成器”;系统uuid“;在持久性单元中定义

Eclipse:没有名为“的生成器”;系统uuid“;在持久性单元中定义,eclipse,hibernate,persistence.xml,Eclipse,Hibernate,Persistence.xml,我将一个支持maven的项目导入Eclipse。从Eclipse中,我在以下行的系统uuid部分中得到一个错误“持久化单元中没有定义名为“system uuid”的生成器”: @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") @Column(length = 36) public String getId() { return

我将一个支持maven的项目导入Eclipse。从Eclipse中,我在以下行的系统uuid部分中得到一个错误“持久化单元中没有定义名为“system uuid”的生成器”:

@Id @GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(length = 36)
public String getId() {
    return id;
}
项目从命令行正确生成。是什么导致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>

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


这看起来像是Eclipse中Dali的Hibernate工具扩展中的一个bug。您可以向Hibernate工具报告这一问题,或者这在较新的版本中已得到修复。

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

这将有助于:

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

但是,Java中注释的顺序不能有任何意义。所以Karen是对的,这似乎是一个bug。

从github导入项目后,我在eclipse mars中遇到了几乎相同的错误-我使用了自定义id生成器

错误: 持久化单元中未定义名为“idGenEchantillon”的生成器

因此,我的答案并不是针对主要问题,而是针对其他与我有相同错误的开发人员,可以在这里看到

守则:

@Id
@GenericGenerator(name = "idGenEchantillon", strategy = "com.labo.model.KeyGenaratorForEchantillon")
@GeneratedValue(generator ="idGenEchantillon")
@Column(name = "ID_ECHANTILLON", length = 12)
private String idEchantillon;
我使用maven来管理依赖项

  • 我已经从我的项目中删除了JPA方面=>每次我使用Maven更新我的项目时,项目都会再次获取JPA方面=>错误保留
  • 我已经禁用了Maven的“JPA配置器”选项:窗口>>首选项>>Maven>>Java EE集成,然后取消选中“JPA配置器”,之后我使用Maven=>更新了我的项目,错误消失了

  • 月食月亮:这似乎有效

    Project -> Clean
    

    但是如果开发人员把这个错误检查出来,我会停下来考虑我们应该在坚持.xml中做些什么,你不这么认为吗?这个答案似乎很老套。我刚刚下载了EclipseLuna,问题仍然存在。我真不敢相信一只虫子能活这么长时间。这真的是Dali的问题吗?这对我很有效。然而,我必须同意@IgnacioRubio。这会抑制错误,让我们继续。。。但是,为什么首先抛出错误?根据我的研究,我还没有找到解决方案。2018年,它仍然存在!面向Web开发人员的Eclipse Java EE IDE-2018-09。我建议更改项目特定的设置。在“错误/警告”下,单击“配置项目特定设置”选项并进行更新。2019年仍处于运行状态,Lol对我也不起任何作用。和项目>清洁。。。(建议如下)两种顺序都没有帮助。我正在使用Mars.2(4.5.2)。