wake-up-neo.com

JPA Kann Spalte/IntelliJ nicht auflösen

Ich versuche, einige Java-Klassen mithilfe der JPA-Implementierung von Hibernate abzubilden. Mein Problem ist, dass ich keine hartcodierten Strings als Spalte namens verwenden kann. Sie können die Fehlermeldung sehen, die ich im Bild unten bekomme.

enter image description here

Ich verwende OpenJPA als meinen Standard-JPA-Provider und habe bereits versucht, es zu ändern.

IntelliJ Version 14.0.3

grüße,

22
pichlbaer

Sie müssen Ihre Datenquelle (erstellen Sie zuerst eine Datenquelle in der Datenbankansicht - also Ihre echte JDBC-Datenbankverbindung) mit einer Persistenzeinheit oder Sitzungsfactory (hibernate.cfg.xml) verknüpfen.

Befolgen Sie die folgenden Schritte und die Warnungen werden ausgeblendet:

  1. Öffnen Sie das Persistenzwerkzeug-Fenster (Ansicht | Werkzeugfenster | Persistenz). 
  2. Klicken Sie mit der rechten Maustaste auf das erforderliche Modul, die Persistenzeinheit oder die Session-Factory .__ und wählen Sie im Kontextmenü Datenquellen zuweisen.
  3. Klicken Sie im daraufhin geöffneten Dialogfeld Datenquellen zuweisen auf das Feld Datenquelle Und wählen Sie die erforderliche Datenquelle aus. (Um die Zuordnung zur Datenquelle zu entfernen, wählen Sie. Aus.)

Siehe hier: Datenquellen mit Sitzungsfabriken und Persistenzeinheiten verknüpfen

68
panos

Ich fand die Antwort von Panos hilfreich, aber ich habe niemanden erwähnt, der die Datenbank als Datenquelle hinzugefügt hat. Vielleicht ist das schon Routine genug, um davon auszugehen, aber wenn nicht, dann musste ich folgendes tun:

Wählen Sie View/Tool Windows/Database aus.

Das Datenbankfenster wird normalerweise oben rechts angezeigt.

Klicken Sie im Datenbankfenster auf das grüne Zeichen + und wählen Sie Data Source/MySQL (oder welche Art von Datenquelle Sie verwenden).

Das Fenster Data Sources and Drivers wird geöffnet.

Wenn Ihre Datenbank dort nicht aufgeführt ist, fügen Sie Folgendes mit dem leeren Formular hinzu:

  • Host: normalerweise localhost, aber wenn Ihre Testdatenbank auf einem anderen Rechner Lebt, geben Sie diese Adresse ein.
  • Username: für Ihre Datenbanknutzung. 

  • Passwort: für das Passwort Ihres Datenbankbenutzers.

Um den JDBC-Treiber zu finden, muss IDEA möglicherweise ein wenig manipuliert werden. Mir wurde gesagt, dass es theoretisch im Maven-Build-Prozess für das Projekt, an dem ich arbeitete, gefunden werden sollte, aber nicht. Ich öffnete View/Tool Windows/Database wieder und schaute auf meinen MySQL-Eintrag. Am unteren Rand gab es eine Fehlermeldung neben Driver: und auch einen MySQL -Link. Ich habe auf den Link MySQL geklickt und IDEA öffnet ein Popup, um Connector/J abzurufen.

Obwohl die Kontrollkästchen für Auto commit und Auto sync standardmäßig aktiviert waren und ich sie so beließ, schien IDEA einen Nudge zu benötigen. Oder vielleicht dauerte es nur eine Weile und ich war ungeduldig. 

In jedem Fall habe ich zuerst in Database auf die Zeile für meine Datenbank geklickt. Das schien es zu tun, aber ich wusste nicht, dass ich Persistence noch brauchte, und während ich das aufklärte, schlug ich auf Vorschlag eines Kollegen auch die Schaltfläche Synchronize (zwei Pfeile im Kreis) vor Datenbank.

Sie können auch in Database mit der rechten Maustaste auf Ihre Datenbank klicken und Synchronize auswählen.

Es kann einige Sekunden dauern, aber es sollte angezeigt werden, dass IDEA das Datenbankschema unter dem Eintrag in Database ausfüllt.

Schließlich fand ich Panos 'Antwort und fixierte Persistence.

Wählen Sie View/Tool Windows/Persistence aus.

Das Persistenz-Fenster erscheint normalerweise oben links.

Klicken Sie im Fenster Persistence mit der rechten Maustaste auf Ihr Projekt und wählen Sie Datenquellen zuweisen.

IDEA öffnet einen Dialog mit zwei Spalten, Ihr Projekt in der linken Spalte und in meinem Fall eine leere Zelle in der rechten Spalte. Klicken Sie auf die leere Zelle und IDEA sollte ein Dropdown-Menü anzeigen, in dem Sie die soeben hinzugefügte Datenbank auswählen können.

Es kann wieder einige Sekunden dauern, bis IDEA die Analyse der Datenquelle abgeschlossen hat und alle Inspektionen erneut durchgeführt werden.

9
Steven J Owens

Wenn Sie die JPA verwenden, ist es auch wichtig, den SQL-Dialekt als HSQLDB anstelle von MySQL einzurichten. Dies ist oft verwirrend, da MySQL der richtige Dialekt ist. In der Tat handelt es sich bei HSQL jedoch um Hibernate.

Wenn Sie gerade ein Upgrade auf IntelliJ 2017.13 oder andere Derivate dieser Version (z. B. Webstorm) durchgeführt haben oder Ihr Projekt gerade neu importiert haben, führt dies möglicherweise zu einer Störung der Sprachinjektion und die manuelle Korrektur.

Dies kann über das Projekt erfolgen 

Einstellungen -> Sprachen und Frameworks

teil der IDE.

0
Manabu Tokunaga

Eigentlich ist dies kein Fehler, der die Kompilierung Ihres Codes verhindert. Wahrscheinlich ist Ihr Rechtschreibprüfprogramm aktiviert, und Sie erhalten einen Schreibfehler. Wenn Sie Ihren Code kompilieren können, können Sie diese Art von Szenario ignorieren. 

Sehen Sie, Sie haben keine Fehlermeldung für andere Texte wie @Column, @GeneratedValue usw. erhalten. Das bedeutet, dass sich Gläser, die diese Art von Material verwenden, in Ihrem Buildpfad befinden. Ich denke, Sie können diese Art von Fehlern ignorieren. 

0
Mehmood Arbaz