Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Lortech
    addikt

    És ezt a merget-t hova kell tenni?

    Mert így ugyan az a hiba. (getgod() konkrétan az adatbázisból kérdezi leg a god entity-t, ami egy user.
    EntityManager em= getFactory().createEntityManager();
    em.getTransaction().begin();
    Event evt= new Event(new Date(),em.merge(getGod()),event, success);
    em.persist(evt);
    em.getTransaction().commit();
    em.close();

    #9626 az még lehet más más állapotból volt, most username van, és amiatt sír, hogy "Unknown column 'username' in 'field list'"

    De érdekes, mert az events-ben nincs username, hanem username_username-t generál oda a jpa tools, ahogy az applicant osztályban is applicant van, és applicant_username-t generál az adatbázisba. A username az events-ben és az applicant entity-ben is igazából egy hivatkozás az XUser entity-re

    @Entity
    public class XUser implements Serializable {

    private String name;
    @Id
    private String username;
    private String password;
    private UsrType type;

    @Entity
    @Table(name="Events")
    public class Event implements Serializable {

    @Id
    private Date date;
    private XUser username;
    private String event;
    private boolean success;

    @Entity
    @Table(name="Applications")
    public class Application implements Serializable {
    @Id
    @GeneratedValue
    private int id;
    private XUser applicant;
    private float amount;
    private boolean approved;

    Lehet bugos a JPA Tools table from entities generátora?

    Szerk:
    kipróbáltam azt hogy stimmeljen pontosan a név, tehát

    @Entity
    @Table(name="Events")
    public class Event implements Serializable {

    @Id
    private Date date;
    @Column(name="USERNAME_USERNAME")
    private XUser username;
    private String event;
    private boolean success;

    De ez sem nyert:
    "Cannot add or update a child row: a foreign key constraint fails (`ulytestdb`.`events`, CONSTRAINT `FK_Events_USERNAME_USERNAME` FOREIGN KEY (`USERNAME_USERNAME`) REFERENCES `xuser` (`USERNAME`))

    Nem definiáltál az entitásaidba relációkat, legalábbis nem látszik. Anélkül nem nagyon fog menni és FK be fog utagni, meg nyilván generátor se fog tudni jó db sémát generálni így. Ajánlott olvasmány: JPA relációk, de úgy általában JPA.

    EntityManager em= getFactory().createEntityManager();
    em.getTransaction().begin();
    Event evt= new Event(new Date(),em.merge(getGod()),event, success);
    em.persist(evt);
    em.getTransaction().commit();
    em.close();

    Ezzel itt az (lehet) a baj, hogy amint lezárod az EntityManagert, az összes managed entitás példányod, amit a persistence contextben használtál, detached lesz. Ennek pedig az a következménye, hogy a még be nem töltött, lazy load relációk nem tudnak majd betöltődni, ill. az objektumok módosítása esetén nem lesznek automatikusan perzisztálva sem.

Új hozzászólás Aktív témák