טראַנסאַקטיאָן יסאָלאַטיאָן לעוועל

איך וועל פּרובירן צו באַשרייַבן מיין פּראָבלעם אין JPA טראַנסאַקטיאָן אפגעזונדערטקייט לעוועלס.

דאַטאַבייס סטרוקטור:

  • טאַבלע 1 -> מיט PK דיפיינד ווי טאָג ('ddMMyyyy')
  • טאַבלע 2 -> מיט FK צו טאַבלע 1

JPA (אפגעזונדערטקייט מדרגה :: read_commited ) - קאָד:

    Query query = em.createQuery("from Table1 trd where trd.id = :d");
    query.setParameter("d", date);

    Table1 t = null;
    try{
        t = (Table1) query.getSingleResult();
    }catch(javax.persistence.NoResultException e){
        t = null;
    }

    if(t==null){
        t=new Table1 (date);
        em.persist(trd);
    }

    for(Table2 q:tables2){
        q.setTable1(t);
        em.merge(q);
    }

אַזוי די פּראָצעדור טשעק אויב די רעקאָרד יגזיסץ אין דב און אויב נישט שאַפֿן אַ נייַע. מעטאָד איז גאָר קאָרעקט אויב די סיסטעם איז באזירט אויף בלויז איין פאָדעם. אַנדערש עס איז מעגלעך סיטואַציע ווי דאָס:

  • פֿאָדעם 1: קוק אויב ענטיטי פאָרשטעלן דורך דאַטע יגזיסץ אין דאַטאַבייס
  • פֿאָדעם 2 : טאָן פּונקט די זעלבע

ביידע פון ​​זיי טראַכטן אַז אַזאַ רעקאָרד נאָך נישט עקסיסטירן, אַזוי לייגן נייַע. אַלץ איז גוט ביז דעם מאָמענט פון קאַמיטינג טראַנזאַקשאַנז. ערשטער איינער וועט זיין קאַמיטאַד אָן קיין ויסנעם, קויפן די רגע העכערונג ויסנעם

איז קיין מעגלעכקייט צו ופהיטן אַזאַ סיטואַציע אַחוץ טשאַנגינג די אפגעזונדערטקייט מדרגה צו S ERIALIZABLE ?

6
задан skaffman 7 July 2011 в 21:02
поделиться