Nehezen tudom elérni a JUnit tesztemet. Itt vannak a kódrészletek. Az első a szuperosztályom:

Akkor két leszármazott van:

Itt van a szkript, amely létrehozza az adatbázist (kivétel) a PostgreSQL-ben:

És végül a teszteset (annak egy része):

Vigyázz, most következik a kiáltás: a lemez

A kérdés mivel? 190216.877 D main/JpaMealRepositoryImpl - m = null

Ha ezt a lekérdezést a Postgres programban futtatom, akkor a? az meal_id-del (ami 4, amint az a lemezen látható), akkor kapok egy sort. Csak egy sor, ahogy szerettem volna. Miért adja az em.find (.) Nullát ?

FRISSÍTÉS

Az egyes tesztosztályok indításakor feltöltöm a DB-t a refill.sql parancsfájlmal:

Itt van a qwery, amelyet a psql-ben teszek közzé:

Az eredmény az

vissza

2 válasz

Így oldottam meg a problémát.

Amikor írtam, az eredeti szuperosztályom volt

A megoldás a @GeneratedValue stratégiájában található (stratégia = GenerationType.IDENTITY). Itt van a megújult IdentifiedEntity:

(A @Access (FIELD) opcionális)

Véleményem szerint van egy hiba a hibernált állapotban, amely akkor reprodukálódik, ha @GeneratedValue (stratégia = GenerationType.IDENTITY) .

Először is, a tesztnek elszigetelt környezetben kell működnie, nem törölve minden futtatáskor az adatbázist.

Ha azt szeretné, hogy a tesztek eltávolítsák a jelenlegi PostgreSQL sémát, akkor csak a Hibernate hibernate.hbm2ddl.auto konfigurációs tulajdonságot kell használnia.

Ha nem szeretné, hogy a hibernálás megváltoztassa a sémát, akkor ne állítsa be a hibernate.hbm2ddl.auto tulajdonságot.

Viszont visszalép minden versenyen? Hogyan fogsz dolgozni egy ilyen környezetben?

Jobb kezdeni egy tiszta sémával, kitölteni adatokkal, elvégezni a tesztet, és a végén törölni, mert nem akar olyan adatokat hagyni, amelyek zavarhatják a többi tesztet.