hibernate: one2one inverse

Jaroslav Hurdes java na ataco.cz
Úterý Srpen 11 12:36:02 CEST 2009


Na podobny problem jsem pouzil toto reseni

v domenovem objektu jsem zadal aby se dana polozka nemenila (update =
false) (mapovani pomoci xDoclet)
/**
     * Vrátí cas zpracovani
     * @hibernate.property
     *      column = "lp_processed_time"
     *      insert = "false"
     *      update = "false"
     *      not-null = "false"
     *      type = "timestamp"
     */
    public Timestamp getProcessedTime() {
        return processedTime;
    }

a napsal jsem si specialni metodu do DAO objektu, ktera provede update
teto polozky, ale nezmeni se cislo verze a v ni se provadi

        Query q = getSession().createQuery("update ModelX"
                    + " set lp_processed_time = :lp_processed_time"
                    + " where lp_id = :id");
            q.setTimestamp("lp_processed_time",
TimeUtils.getActualTimestamp());
            q.setLong("id", model.getId());
            int res = q.executeUpdate();
            if (res != 1) {
                throw new
EntityNotFoundException(getServiceObject().getLocalizedText(MessagesKeys.common_exceptions_entityNotFound), 

model);
            }

            getSession().flush();

Takto muzu s danou entitou pracovat pohodlne v aplikaci a cist i
processedTime, jedine co nemuzu je provest update nastaveneho casu
pomoci save, ale jen touto spec metodou.

Jaroslav Hurdes

Martin Beránek napsal(a):
> Zdravím,
>
> narazil jsem na následující problém:
>
> Mám entitu Storage, která uchovává nastavení a stav logického úložného prostoru. Tahle entita je velmi často updatována (co sekundu) kvůli položce
> "used", což je velikost zaplnění. To však úplně zablokovalo její editaci z webového rozhraní (entita je verzována).
>
> Napadlo mě vytvořit novou entitu StorageUsed a tam tuhle property vytáhnout. To zřejmě bude fungovat, ale nedaří se mi rozumným způsobem zapsat
> mapování do hbm.xml (java entity generujeme). Vztah one2one se má "simulovat" přes mane-to-one s unique="true", ale tohle neumí inverse, takže pak mi
> vazbu "drží" Storage a ne StorageUsed. Chtěl bych, aby vazbu držela StorageUsed už kvůli jednoduchému update ze současného stavu (systém je v provozu)
> a taky z logiky věci.
>
> Nějaké nápady? Díky za pomoc
>
> --
> Martin Beránek
> ICZ a.s.
>
>   





Další informace o konferenci Konference