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