JPA kann Spalte/IntelliJ nicht auflösen

Lesezeit: 7 Minuten

Ich versuche, einige Java-Klassen mit der Hibernate-JPA-Implementierung abzubilden. Mein Problem ist, dass ich keine fest codierten Strings als Spaltennamen verwenden kann. Sie können die Fehlermeldung sehen, die ich im Bild unten bekomme.

Geben Sie hier die Bildbeschreibung ein

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

IntelliJ-Version 14.0.3

Grüße,

  • All diese Antworten erschweren das Leben so sehr. Heutzutage ist die naheliegendste Lösung, mit der rechten Maustaste auf die Spalte oder Tabelle zu klicken, die Datenquelle auszuwählen und das * Augenroll-Emoticon * zu fixieren.

    – html_programmierer

    6. Juni 2021 um 14:04 Uhr

Benutzer-Avatar
Panagiotis

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

Befolgen Sie die folgenden Schritte und die Warnungen verschwinden:

  1. Öffnen Sie das Werkzeugfenster Persistenz (Ansicht | Werkzeugfenster | Persistenz).
  2. Klicken Sie mit der rechten Maustaste auf das erforderliche Modul, die Persistenzeinheit oder die Sitzungsfabrik, und wählen Sie im Kontextmenü Datenquellen zuweisen aus.
  3. Klicken Sie im sich öffnenden Dialog Datenquellen zuweisen auf das Feld Datenquelle und wählen Sie die gewünschte Datenquelle aus. (Um die Verknüpfung mit der Datenquelle zu entfernen, wählen Sie .)

Siehe hier: Zuordnen von Datenquellen zu Sitzungsfabriken und Persistenzeinheiten

  • Richtige Antwort, weil sie das Verhalten erklärt und eine Lösung anbietet, während die andere Ihnen nur sagt, dass Sie sie ignorieren sollen.

    – schrass

    11. September 2015 um 8:55 Uhr

  • @panos Dies behebt nur @Table Fehler, aber meine Spalten zeigen immer noch, dass sie nicht aufgelöst werden können. Irgendeine Idee, wie man das beheben kann?

    – Don Rhummy

    24. Mai 2016 um 14:08 Uhr


  • Etwas anderes, das Sie überprüfen können, ist, dass der Name der generierten/codierten Entitätsklasse denselben Namen hat wie die Tabelle in der Datenbank. Wenn dies nicht der Fall ist, verwenden Sie die Namenseigenschaft der Entitätsanmerkung, um die Tabelle abzugleichen. Zum Beispiel: @Entity(name=”yourTableName”)

    – demian

    19. Oktober 2016 um 2:21 Uhr


  • @DonRhummy Ich hatte das gleiche Problem. Es verschwand, als ich vollständig qualifizierte Namen verwendete: .. IntelliJ hat sogar damit begonnen, die Spaltennamen automatisch zu vervollständigen.

    – PhönixPerson

    17. Februar 2017 um 12:33 Uhr

  • Ich habe das getan und nur der Entitätsname ist identifizierbar, aber der Spaltenname ist immer noch unerwartet, wie kann man das loswerden?

    – sichere Kurve

    13. Mai 2018 um 13:32 Uhr

Für diejenigen, die diese Überprüfung nur deaktivieren möchten, gehen Sie zu Intellij IDEA -> Einstellungen -> Suchen “Nicht aufgelöste Datenbankverweise in Anmerkungen“ und deaktivieren Sie es.
Geben Sie hier die Bildbeschreibung ein

(macOS Mojave und Intellij Ultimate 2019.3)
Dadurch wird die Inspektion deaktiviert und alle Fehler „Kann Spalte nicht auflösen…“ auf der entfernt @Column Anmerkungen. Intellij beendet die Überprüfung, ob die String-Spaltennamen in den Datenbanktabellen vorhanden sind. Tun Sie es auf eigene Gefahr.

  • Danke. Diese Prüfung ist so lästig, wenn mehrere Datenquellen verwendet werden

    – App

    8. Januar 2020 um 9:27 Uhr

  • Danke dafür. Bitte senden Sie eine Karen, um sich beim Projektmanager bei JetBrains zu beschweren, der der Meinung war, dass diese Funktion standardmäßig aktiviert sein sollte.

    – heiße Fleischbällchensuppe

    29. Januar 2021 um 11:33 Uhr

Benutzer-Avatar
Steven J. Owens

Ich fand die Antwort von Panos nützlich, aber ich habe niemanden gesehen, der das Hinzufügen der Datenbank als Datenquelle erwähnt hat. Vielleicht ist das Routine genug, um anzunehmen, aber wenn nicht, musste ich Folgendes tun:

Auswählen Ansicht/Werkzeugfenster/Datenbank

Das Datenbankfenster erscheint normalerweise oben rechts.

Klicken Sie im Datenbankfenster auf das Grün + unterschreiben und auswählen Datenquelle/MySQL (oder welche Art von Datenquelle Sie verwenden).

Das Datenquellen und Treiber Fenster erscheint.

Wenn Ihre Datenbank dort nicht aufgeführt ist, verwenden Sie das leere Formular, um Folgendes hinzuzufügen:

  • Gastgeber: normalerweise localhost, aber wenn sich Ihre Testdatenbank auf einem anderen Computer befindet, geben Sie diese Adresse ein.
  • Nutzername: für Ihre Datenbanknutzung.

  • Passwort: für das Passwort Ihres Datenbankbenutzers.

IDEA erfordert möglicherweise etwas Fummelei, um den JDBC-Treiber zu finden. Mir wurde gesagt, dass es es theoretisch im Maven-Build-Prozess für das Projekt, an dem ich arbeitete, hätte finden sollen, aber das tat es nicht. Ich habe wieder geöffnet Ansicht/Werkzeugfenster/Datenbank und schaute auf meinen MySQL-Eintrag. Unten stand daneben eine Fehlermeldung Treiber:und auch ein MySQL Verknüpfung. Ich habe auf die geklickt MySQL link und IDEA brachten ein Popup zum Abrufen von Connector/J.

Trotz der Tatsache, dass die Kontrollkästchen für Auto-Commit und Automatische Synchronisation standardmäßig aktiviert war und ich sie so beließ, schien IDEA einen Schubs zu brauchen. Oder vielleicht dauerte es nur eine Weile und ich war ungeduldig.

Jedenfalls habe ich zuerst auf die Zeile für meine Datenbank in doppelgeklickt Datenbank. Das schien zu reichen, aber ich wusste nicht, dass ich es brauchte Beharrlichkeit dennoch, und während ich das regelte, klickte ich auf Vorschlag eines Kollegen auch auf Synchronisieren Taste (zwei Pfeile im Kreis) ein Datenbank.

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

Es kann einige Sekunden dauern, aber Sie sollten sehen, dass IDEA das Datenbankschema unter dem Eintrag in Database ausfüllt.

Endlich habe ich die Antwort von Panos gefunden und behoben Beharrlichkeit.

Auswählen Ansicht/Werkzeugfenster/Persistenz

Das Persistenzfenster erscheint normalerweise oben links.

Klicken Sie im Persistenzfenster mit der rechten Maustaste auf Ihr Projekt und wählen Sie es aus 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 Ihnen ein Dropdown-Menü anzeigen, mit dem Sie die gerade hinzugefügte Datenbank auswählen können.

Auch hier kann es einige Sekunden dauern, bis IDEA die Analyse der Datenquelle abgeschlossen und alle Inspektionen wiederholt hat.

  • Die rechte Spalte unter Datenquellen zuweisen ist verdammt schwer zu sehen! Ist mir bis jetzt gar nicht aufgefallen! Vielen Dank!

    – Amalgowinus

    4. Januar 2018 um 22:17 Uhr

  • Es ist Stevens Antwort, die Sinn macht und keine Dinge annimmt, wenn es um die Konfiguration geht. Es muss erwähnt werden.

    – Vimal-Krishna

    28. September 2018 um 8:31 Uhr

Nur für alle anderen, die dies nicht gelöst haben und die über Google gefunden wurden (wie ich selbst). Das Festlegen des Tabellennamens über die @Table-Anmerkung hat es für mich behoben.

Eigentlich ist dies kein Fehler, der die Kompilierung Ihres Codes verhindert. Wahrscheinlich ist Ihre Rechtschreibprüfung eingeschaltet und gibt Ihnen den Rechtschreibfehler. Wenn Sie Ihren Code kompilieren können, können Sie diese Art von Szenario ignorieren.

Schauen Sie, Sie haben keine Fehlermeldung für anderen Text wie @Column, @GeneratedValue usw. Das bedeutet, dass sich Gläser, die diese Art von Zeug verwenden, in Ihrem Build-Pfad befinden. Ich denke also, dass Sie diese Art von Fehlern ignorieren können.

  • Danke für die Antwort. Aber warum ist @Column(name = myConstant) akzeptabel? myConstant ist so etwas wie ‘static final String myConstant = “LEC_ID”) Sind hartcodierte Strings und Konstanten in Java nicht gleich?

    – pichlbär

    19. März 2015 um 21:57 Uhr


Benutzer-Avatar
Manabu Tokunaga

Wenn Sie JPA verwenden, ist es auch wichtig, den SQL-Dialekt als HSQLDB anstelle von MySQL einzurichten. Dies ist oft verwirrend, da es sich anfühlt, als wäre MySQL der richtige Dialekt, aber tatsächlich haben Sie es mit Hibernate zu tun, es ist HSQL.

Wenn Sie gerade auf IntelliJ 2017.13 oder andere Derivate dieser Version (z. B. Webstorm) aktualisiert oder Ihr Projekt gerade neu importiert haben, kann dies die Sprachinjektion durcheinander bringen und muss manuell korrigiert werden.

Dies kann über das Projekt erfolgen

Einstellungen -> Sprachen und Frameworks

Teil der IDE.

  • Danke für die Antwort. Aber warum ist @Column(name = myConstant) akzeptabel? myConstant ist so etwas wie ‘static final String myConstant = “LEC_ID”) Sind hartcodierte Strings und Konstanten in Java nicht gleich?

    – pichlbär

    19. März 2015 um 21:57 Uhr


Benutzer-Avatar
Utku A.

Wenn es keine wirkliche Diskrepanz gibt und diese Warnung nur wegen IDE auftritt, können Sie Ihr Projekt einfach mit der Datenquelle verknüpfen, die Sie verbinden. Intellij schlägt bereits vor, wie dies zu tun ist.

1114960cookie-checkJPA kann Spalte/IntelliJ nicht auflösen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy