# JPA NOT NULL



## mc_fausti (4. Jun 2011)

hallo!
ich möchte aus einer datenbank tabelle alle datensätze auslesen, die einen eintrag (egal welcher) in einer bestimmten spalte haben...

bzw alle datensätze die keinen eintrag haben

allerdings getrennt...

Ich dachte da an ein sql statement wie: 
select * from tabelle t where t.spalte is null
select * from tabelle t where t.spalte is not null

ich hab jz schon div. seiten und docs durch aber ich bekomm immer nur eine leere liste...

ich hoffe ihr könnt mir helfen!

lg


----------



## XHelp (4. Jun 2011)

Sollen die 2 Zeilen *ein* Statement darstellen?


----------



## mc_fausti (4. Jun 2011)

nein jeweils ein eigenes, also 2


----------



## XHelp (4. Jun 2011)

Und beide für sich liefern ein leeres Resultat, obwohl die Tabelle definitiv nicht leer ist?
Welche Datenbank verwendest du und was ist der Typ von "spalte"?


----------



## mc_fausti (4. Jun 2011)

ja beide liefern das...

postgre sql

in der datenbank ist der datentyp: date

in java ist der datentyp: calendar

ich hab das query extra in der db selbst getestet ob es funktioniert, so wie ich mir das denke, aber wenn ich versuche es in jpa zu übersetzen bekomme ich ein leeres resultat...


----------



## tagedieb (5. Jun 2011)

mc_fausti hat gesagt.:


> ich hab das query extra in der db selbst getestet ob es funktioniert, so wie ich mir das denke, aber wenn ich versuche es in jpa zu übersetzen bekomme ich ein leeres resultat...



???:L Also wenn ich dich richtig verstehe funktioniert dein SQL wenn du es direkt in der DB testest? Oder hast du nur gestest und es hat nicht funktioniert???

Wenn dein SQL korrekt ist wie sieht dann dein JPQL aus ? Oder benutzt du native Queries?


----------



## mc_fausti (5. Jun 2011)

ich hab das query direkt in der db getestet und es funktioniert...

und ich habe es dann versuch in jpa zu integrieren aber dort funktioniert es dann nicht mehr...


also in der db hab ich geschrieben:

SELECT s FROM tabelle s where s.spalte is null

das liefert mir das gewünschte ergebnis

in jpa sollte es genau auf die gleiche art und weise funktionieren...ich habs auch mit IS EMPTY in JPA versucht statt IS NULL aber es klappt einfach nicht...was mache ich falsch?


----------



## tagedieb (5. Jun 2011)

Hast du keine Fehlermeldung? Stacktrace?

Benutzt du JPA query oder nativeQuery?

Zeig mal deine JPQL Syntax!


Falls du JPQL verwendest musst du auch auf die Gross-Kleinschreibung achten.


----------



## mc_fausti (5. Jun 2011)

ich bekomme keine fehlermeldung...

String query = "SELECT s FROM SickCertificateJPAEntity s, DocumentJPAEntity d WHERE s.id=d.id AND s.ends IS NULL";
			TypedQuery<SickCertificateJPAEntity> query0 = entityManager.createQuery(query, SickCertificateJPAEntity.class);
			setQueryBounds(query0);
			return Collections.unmodifiableList(new LinkedList<SickCertificate>(query0.getResultList()));


----------



## tagedieb (5. Jun 2011)

Dann vereinfache mal die Query und teste ob du was zurueckbekommst.
Wozu brauchst du die DocumentJPAEntity?? Kannst du diesen Teil nicht einfach loeschen?

Versuch mal 
	
	
	
	





```
SELECT s FROM SickCertificateJPAEntity s WHERE s.ends IS NULL
```


----------



## mc_fausti (5. Jun 2011)

das hab ich auch versucht aber das funkt auch nicht...ist NOT NULL die richtige jpa bezeichnung?


----------



## tagedieb (5. Jun 2011)

10.2.*JPQL Language Reference

Gemaess Spez. muesse dies korrekt sein. Welche Persistency Framework benutzt du den? Versuch mal den SQL logging einzuschalten. JPA show SQL query  Solved Problems – SQL, Java, JBoss


----------

