2012-09-17 12 views
12

Ho un progetto abilitato per Maven importato in Eclipse. Da Eclipse, ottengo un errore "No generatore chiamato 'sistema-uuid' è definito in unità di persistenza" sulla parte del sistema-UUID delle seguenti linee:Eclipse: nessun generatore denominato "system-uuid" è definito nell'unità di persistenza

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

Il progetto si basa correttamente dalla riga di comando. Che cosa sta causando Eclipse per generare questo errore e come risolverlo?

Il file di persistenza si presenta così ..

<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> 

risposta

33

È possibile attivare l'errore off/giù in Preferenze -> Java Persistence -> JPA -> errori/avvisi in 'Query e generatori' cambiando la errore "Il generatore non è definito nell'unità di persistenza" in un avviso.

Questo sembra un bug nell'estensione degli strumenti di Hibernate di Dali in Eclipse. È possibile segnalare questo a Hibernate Tools o forse questo è stato risolto in una versione più recente.

+1

Ma se gli sviluppatori mettono questo errore da controllare, mi fermo a considerare che dovremmo fare qualcosa in persistence.xml, non è vero pensi così? : S –

+4

Questa risposta sembra abbastanza vecchia. Ho appena scaricato Eclipse luna e il problema è ancora lì. Non posso credere che un insetto sarebbe vivo per così tanto tempo. Questo è davvero un bug su Dali? –

+0

Questo ha funzionato per me. Tuttavia, devo essere d'accordo con @IgnacioRubio. Questo sopprime l'errore e procediamo ... tuttavia, perché l'errore viene generato in primo luogo?Non ho trovato la soluzione in base alla mia ricerca. –

1

Le versioni più recenti del supporto JPA di Eclipse sembrano dipendere dall'ordine delle annotazioni. Stai definendo il generatore dopo aver provato ad usare em.

Ciò funzionerà:

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

Tuttavia l'ordine delle annotazioni in Java non devono avere un significato. Quindi Karen ha ragione, sembra un bug.

+1

Ho archiviato un nuovo bug report: https://bugs.eclipse.org/bugs/show_bug.cgi?id=474298 – roehrijn

+5

non ha funzionato per me in qualsiasi ordine – yair

+0

Non ha funzionato per me né in alcun ordine. E Project> Clean ... (suggerito sotto) non ha aiutato in nessun ordine. Sto usando Mars.2 (4.5.2). – mbmast

0

Avevo quasi lo stesso errore - ho usato il mio id id generatore - in eclipse mars dopo aver importato il mio progetto da github.

l'errore: No generatore di nome “idGenEchantillon” è definito in unità di persistenza

Quindi la mia risposta non è proprio per la questione principale, ma per gli altri sviluppatori hanno lo stesso errore come il mio, che può vedere qui .

il codice:

@Id 
@GenericGenerator(name = "idGenEchantillon", strategy = "com.labo.model.KeyGenaratorForEchantillon") 
@GeneratedValue(generator ="idGenEchantillon") 
@Column(name = "ID_ECHANTILLON", length = 12) 
private String idEchantillon; 

ho usato Maven per gestire le dipendenze.

  1. Ho rimosso la faccetta JPA dal mio progetto => ogni volta che aggiorno il mio prject usando Maven, il progetto riprende la sfaccettatura JPA => l'errore rimane.
  2. Ho disabilitato l'opzione "JPA Configurator" di Maven: Finestra >> Preferenze >> Maven >> Integrazione Java EE, quindi deselezionare "JPA CONFIGURATOR", dopo di che ho aggiornato il mio progetto usando Maven => l'errore è andato.
5

Eclipse Luna: Questo sembra funzionare

Project -> Clean 
Problemi correlati