JPA Problem: java.sql.SQLSyntaxErrorException:

Mr.y

Aktives Mitglied
Hallo, ich hoffe, dass hier jemand eine Idee hat.
Habe soweit noch nicht so viel Erfahrung mit JPA.

Ich habe einen "NamedQuery", der fehlerfrei deployt wird.

Danach, wenn ich diesen Query ausführen will, sagt er mir, dass die oder die Spalte nicht in der "From"-Liste wären:

Java:
@NamedQuery(  
            {

                @NamedQuery(name =  Projekt.FIND_NAME, query = "select a from Projekt a where       
                a.name = :name")
            }
        )

@Id
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long id;


@Column(name="Projekt", unique=true)
private String name;


@Column(name="Position", unique=true)
private int position;

Dann rufe ich diesen Query in einer anderen Klasse auf:

Java:
TypedQuery<Projekt> createNamedQuery = em.createNamedQuery(Projekt.FIND_NAME, Projekt.class);
           
createNamedQuery.setParameter("strname", strname);
         
createNamedQuery.getResultList();

Und in der letzten Zeile sagt er :

java.sql.SQLSyntaxErrorException: Die Spalte 'POSITION' ist in keiner Tabelle der FROM-Liste enthalten.

Ich kann nicht nachvollziehen, warum er das sagt, als ob diese Entity "Projekt" nicht von dem Entity-Manager verwaltet worden wäre....oder vielleicht gibts nen anderen Grund dafür..

Für jede Idee bin ich dankbar.
 
Hast Du in der DB mal geschaut, ob es in der Tabelle 'Projekt' auch eine Spalte 'Position' gibt?
 
Außerdem: Der Parameter in deiner Query heißt "name", aber du versuchst "strname" zu setzen. Das erste @NamedQuery sollte @NamedQueries heißen.
 
Danke dir für den Tipp.

Nee da ist nur die Spalte ID dar, weder die Spalte "Projekt" noch "Position"

Jetzt wundert mich es, warum er die ID-Spalte gemappt hat aber die anderen zwei Spalten nicht....:bahnhof:

Wann wird die Entity zu einer Tabelle in der Datenbank?
 
Zuletzt bearbeitet:
Ok, vielleicht ist die Frage irrsinnig^^

Aber warum wird nur die ID-Spalte erzeugt?

zur strname und name....das hab ich etwas verändert^^ aber nicht vollständig, daran liegts kaum...

Übrigens habe ich noch ne zweite Entity "Projekteintrag"
mit dem Fremdschlüssel von Projekt

Sieht dann in der anderen Klasse so aus:

Java:
@ManyToOne(optional=false)//Es muss ein Projekt geben 
private Projekt passendesProjekt;

Und in der Tabelle "Projekteintrag" gibts auch nur eine einzigste Spalte ID

Dazu muss ich noch sagen, dass die Datenbank absolut leer ist, das heisst, ich hab noch keine Projekt-Entity auf die DB abgebildet "em.persist(Projekt)"

Vielleicht liegt es einfach daran??

Die Situation ist einfach die, dass ich beim ersten mal nichts drin hab, dann gebe ich nen Namen ein um eben was anzulegen, davor prüfe ich aber, ob es den namen schon mal gibts ( was ja gar net sein kann, weil da es noch gar nix gibts)

Diese Prüfung ist dafür da, damit man keine doppelten Projekte in der DB hat.
 
Zuletzt bearbeitet:
Du lässt das DB-Schema durch Deine Entitäten erzeugen, oder? Jedenfalls verstehe ich das so.

In der persistence.xml steuerst Du dieses Verhalten.

Und wieso ist 'Projekt' bei Dir eine Spalte? Das liest sich eher so, als wäre das die Tabelle.

Da müsstest Du mal Code von zeigen. Und eventuell mal eine komplette Entität. Sonst wird das schwierig hier zu helfen.
 
Danke dir für deine Mühe, es lag die ganze Zeit an der DB.
Ich habe scheinbar davor die Tabellen und Spalten irgendwie kreuz und qwer erzeugt und am Ende hat das natürlich nciht mehr übereingestimmt. Ich hab die DB gelöscht und neu erzeugt, nun geht alles 🙂
 

Neue Themen


Zurück
Oben