JPA Entity Manager findet Spalte nicht

BLR

Erfahrenes Mitglied
Hallo, ich hab angefangen mich mit JPA, mit Stateless-EJB zu beschäftigen.
Nun hab ich ein für mich nicht nachvollziehbares Problem:

Klasse1:

@Entity

@NamedQueries(
{
@NamedQuery(name= Projekt.FIND_ALL, query = "select p from Projekt p order by p.mintposition"),
@NamedQuery(name = Projekt.FIND_BY_NAME, query = "select p from Projekt p where p.mstrName = :strname")
}
)
public class Projekt implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;


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


@Column(name="ProjektPosition", unique=true)
private int mintposition;


Klasse2:


@Stateless
public class ProjektService {
@PersistenceContext(unitName = "OnlineProjektPU")
private EntityManager em;

public void persistProjekt(Object object) {
em.persist(object);
}

public Projekt findProjekt(String strname) throws Exception {
List<Projekt> lstResutlList = null;
try {



TypedQuery<Projekt> createNamedQuery = em.createNamedQuery(Projekt.FIND_BY_NAME, Projekt.class);

createNamedQuery.setParameter("strname", strname);



createNamedQuery.getResultList();

In der em.createNamedQuery(Projekt.FIND_BY_NAME, Projekt.class);
wird der zweite "NamedQuery" aufgerufen, dann werden Parameter gesetzt.
Und in der letzten Zeile habe ich ne Exception:

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

Ich verstehe nicht warum, wenn ich das doch mit der Annotation "@Column" deklariert habe.
Kann mir da jemand weiterhelfen, vllt?

Danke im Voraus
 
@Column bezieht sich afaik nur auf die Physik - sprich der DB.

JPA arbeitet ausschließlich mit den Attributen des Objekts. Daher musst Du das Attrribut nehmen und nicht die DB-Columns.

Grüße,
gore
 
Zurück