2015-03-19 6 views
15

Sto tentando di mappare alcune classi Java utilizzando l'implementazione Hibernate JPA. Il mio problema è che non posso usare i nomi delle colonne di stringhe hardcoded. Puoi vedere il messaggio di errore che compare nell'immagine qui sotto.JPA Impossibile risolvere la colonna/IntelliJ

enter image description here

sto usando OpenJPA come il mio fornitore di APP di default e ho già provato a cambiarlo.

IntelliJ versione 14.0.3

saluti,

+1

Sarebbe davvero utile, se si potesse contrassegnare la seconda risposta come quella corretta. I voti sono un buon segno, che è corretto. ;-) – chkal

risposta

51

È necessario associare l'origine dati (creare prima un'origine dati nella vista del database, ovvero la propria connessione al database JDBC reale) con un'unità di persistenza o factory di sessione (hibernate.cfg.xml).

seguire la procedura e le avvertenze scomparirà:

  1. Aprire la finestra degli strumenti Persistence (Visualizza | Strumento Windows | Persistence).
  2. Fare clic con il tasto destro del mouse sul modulo necessario, sull'unità di persistenza o sulla fabbrica di sessione e selezionare Assegna origini dati nel menu di scelta rapida.
  3. Nella finestra di dialogo Assegna origini dati visualizzata, fare clic sul campo Origine dati e selezionare l'origine dati necessaria. (Per rimuovere l' associazione con l'origine dati, selezionare.)

Vedi qui: Associating data sources with session factories and persistence units

+5

Risposta corretta, perché spiega il comportamento e offre una soluzione, mentre l'altro ti dice semplicemente di ignorarlo. – sschrass

+1

Sì, perché questa non è la risposta selezionata? – Amalgovinus

+4

@panos Questo risolve solo errori '@ Tabella', ma le mie colonne continuano a non essere in grado di risolverlo. Qualche idea su come sistemarlo? –

0

In realtà questo non è un qualsiasi errore che impedisce il codice per la compilazione. Probabilmente il tuo correttore ortografico è attivo e ti dà l'errore di ortografia. Se riesci a compilare il tuo codice, puoi ignorare questo tipo di scenario.

Sembra che non si sia verificato alcun errore per altro testo come @Column, @GeneratedValue ecc. Ciò significa che i vasi che utilizzano questo tipo di materiale sono nel percorso di generazione. Quindi penso che tu possa ignorare questo tipo di errore.

+1

Grazie per la risposta. Ma perché @Column (name = myConstant) è accettabile? myConstant è qualcosa come 'static final String myConstant = "LEC_ID") Non sono hardcoded Stringhe e costanti uguali in Java? – pichlbaer

3

ho trovato risposta Panos' utile, ma non ho visto nessuno menzione aggiungendo il database come una sorgente di dati . Forse è abbastanza di routine per essere assunto, ma se non, ecco cosa dovevo fare:

Selezionare Vista/Strumento Windows/Database

La finestra del database di solito appare in alto a destra.

Nella finestra del database, fare clic sulla verde + segno e selezionare Dati di origine/MySQL (o qualunque sapore di origine dati che si sta utilizzando).

La finestra Data Sources and Drivers si apre.

Se il database non è elencato lì, usa il modulo vuoto per aggiungere il seguente:

  • Host: solitamente localhost, ma se il database di test sta vivendo su un'altra macchina, messo quell'indirizzo in.
  • Nome utente: per l'utilizzo del database.

  • Password: per la password dell'utente del database.

IDEA potrebbe richiedere un po 'di giocherellare per trovare il driver JDBC. Mi è stato detto che in teoria avrebbe dovuto trovarlo nel processo di costruzione di maven per il progetto su cui stavo lavorando, ma non è così. Ho riaperto View/Tool Windows/Database e ho guardato la mia voce MySQL. Nella parte inferiore c'era un messaggio di errore accanto al driver : e anche un collegamento MySQL. Ho fatto clic sul collegamento MySQL e IDEA ha richiamato un popup per recuperare Connector/J.

Nonostante il fatto che le caselle di controllo per Auto impegnano e automatica sincronizzazione default a controllare e ho lasciato in quel modo, IDEA sembrava aver bisogno di una spintarella. O forse è stato solo un po 'di tempo e io ero impaziente.

In ogni caso, per prima cosa ho fatto doppio clic sulla riga per il mio database nel Database. Che sembrava di farlo, ma non mi rendevo conto che mi serviva Persistenza ancora, e mentre l'ordinamento che fuori, su suggerimento di un collega, ho anche cliccato il Sincronizza tasto (due frecce in un cerchio) sulla Database.

È possibile anche fare clic destro sul database in Database e selezionare Sincronizza.

Potrebbero essere necessari alcuni secondi, ma è necessario visualizzare IDEA che inserisce lo schema del database sotto la voce nel Database.

Infine ho trovato la risposta di Panos e corretto Persistenza.

Selezionare Vista/Strumento Windows/Persistenza

la finestra persistenza di solito appare in alto a sinistra.

Nella finestra Persistenza, fare clic con il tasto destro del mouse sul progetto e selezionare Assegnare origini dati.

IDEA visualizza una finestra di dialogo con due colonne, il progetto nella colonna di sinistra e nel mio caso una cella vuota nella colonna di destra. Fai clic sulla cella vuota e IDEA dovrebbe darti un menu a discesa che ti consente di selezionare il database che hai appena aggiunto.

Ancora una volta, IDEA può richiedere alcuni secondi per analizzare l'origine dei dati e ripetere tutte le ispezioni.

+0

La colonna di destra sotto Assegna origini dati è folle da vedere! Non l'ho nemmeno notato fino ad ora! Grazie! – Amalgovinus

0

Se si utilizza il JPA, è anche importante impostare l'SQL Dialect come HSQLDB anziché MySQL. Questo è spesso fonte di confusione perché sembra che MySQL sia il dialetto corretto, ma in realtà ciò che si sta trattando con l'ibernazione è HSQL.

Se è appena stato eseguito l'aggiornamento a IntelliJ 2017.13 o ad altri derivati ​​di questa versione (ad es. Webstorm), o hai appena reimportato il tuo progetto, potrebbe rovinare l'inserimento della lingua e doverlo correggere manualmente.

Questo può essere realizzato tramite le impostazioni del progetto

-> Lingue e quadri

parte della IDE.

+0

Questo non è corretto, HSQLDB è qualcosa chiamato HyperSQL e non è correlato alla sospensione. Ma sembra che ci sia qualche problema di configurazione dopo l'aggiornamento a IDEA 2017, stavo ottenendo "impossibile risolvere la colonna" dopo aver importato la mia configurazione. – Amalgovinus