Hirdetés

Keresés

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

  • togvau
    senior tag

    Azt értettem alatta, hogy az entitásban/db-ben a probléma mezőt/oszlopot nem jól definiáltad.
    Pl. nem jó oszlopnevet adtál meg.
    Detached entity passed to persistnek számos oka lehet. Kézzel állítasz be kulcs mezőket mentés előtt? Másodjára persisttel már nem fog menni, mert már létezik adott kulcsú mező, viszont az entity detached állapotban van, mivel még a persistence contextedbe nem töltődött be (pl. merge-dzsel tudod manageddé tenni). Látatlanban okosabbat nem tudok mondani.

    É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`))

  • floatr
    veterán

    Azt értettem alatta, hogy az entitásban/db-ben a probléma mezőt/oszlopot nem jól definiáltad.
    Pl. nem jó oszlopnevet adtál meg.
    Detached entity passed to persistnek számos oka lehet. Kézzel állítasz be kulcs mezőket mentés előtt? Másodjára persisttel már nem fog menni, mert már létezik adott kulcsú mező, viszont az entity detached állapotban van, mivel még a persistence contextedbe nem töltődött be (pl. merge-dzsel tudod manageddé tenni). Látatlanban okosabbat nem tudok mondani.

    Vagy foglalt szót használt a column elnevezéséhez, és nem escape-elte

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