15

我有一个启用 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;
}

该项目从命令行正确构建。是什么导致 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>
4

4 回答 4

41

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

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

于 2012-09-18T01:27:39.423 回答
7

Eclipse Luna:这似乎有效

Project -> Clean
于 2017-05-31T11:25:39.953 回答
6

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

这将起作用:

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

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

于 2015-08-05T08:51:34.667 回答
0

从 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 来管理依赖项。

  1. 我已经从我的项目中删除了 JPA 方面 => 每次我使用 Maven 更新我的项目时,项目都会再次使用 JPA 方面 => 错误仍然存​​在。
  2. 我禁用了 Maven 的“JPA Configurator”选项:Window >> Preferences >> Maven >> Java EE Integration,然后取消选中“JPA CONFIGURATOR”,之后我使用 Maven 更新了我的项目 => 错误消失了。
于 2017-01-12T09:26:16.717 回答