hibernate: one2one inverse
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. smime.p7s Description: S/MIME Cryptographic Signature
Re: hibernate: one2one inverse
2009/8/11 Martin Beránek martin.bera...@i.cz: 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). A nebylo by snazsi udelat, aby automaticky update polozky used nemenil cislo verze? Popr. vypnout verzovani nebo ho delat rucne pouze pri pristupu z webu?
Re: hibernate: one2one inverse
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.
log4j, vlastny appender a PropertyConfigurator
Ahoj. Mam vlastny log4j appender a ten by som rad konfiguroval cez .properties. Netusim ale, ako dostat konfiguracne premenne z .properties do mojho appenderu, pretoze mi na to nepasuje ziadna z jeho metod. Predstavujem si to nejak takto: log4j.appender.A=test.MojAppender log4j.appender.A.foo = faa log4j.appender.A.fii = fuu log4j.rootLogger=INFO, A Rad by som docielil, aby sa pri inicializacii nejak dostalo to foo:faa a fii:fuu do toho appendera. Pozeral som do zdrojakov JDBCAppender, ktory nieco take umoznuje, ale nenasiel som to tam ( resp. nasiel som setUser(), setPassword(), ale netusim, kto ich vola ). Nejaky napad? -- Dusan
Re: log4j, vlastny appender a PropertyConfigurator
Pokud si dobre pamatuju tak log4j vola set metody podle naming convention takze kdyz ve vasem appendru budete mit public void setFoo(String foo){this.foo = foo;} a public String getFoo()... tak se vam hodnoty nastavi automaticky. Palko 2009/8/11 Dusan Zatkovsky msk.c...@gmail.com: Ahoj. Mam vlastny log4j appender a ten by som rad konfiguroval cez .properties. Netusim ale, ako dostat konfiguracne premenne z .properties do mojho appenderu, pretoze mi na to nepasuje ziadna z jeho metod. Predstavujem si to nejak takto: log4j.appender.A=test.MojAppender log4j.appender.A.foo = faa log4j.appender.A.fii = fuu log4j.rootLogger=INFO, A Rad by som docielil, aby sa pri inicializacii nejak dostalo to foo:faa a fii:fuu do toho appendera. Pozeral som do zdrojakov JDBCAppender, ktory nieco take umoznuje, ale nenasiel som to tam ( resp. nasiel som setUser(), setPassword(), ale netusim, kto ich vola ). Nejaky napad? -- Dusan
Re: log4j, vlastny appender a PropertyConfigurator
On Tuesday 11 of August 2009 15:38:48 Pavel Savara wrote: Pokud si dobre pamatuju tak log4j vola set metody podle naming convention takze kdyz ve vasem appendru budete mit public void setFoo(String foo){this.foo = foo;} a public String getFoo()... No, to som z toho JDBCAppendera tak nejak vytusil, ale ked som to skusil, nefungovalo to. Teraz som to skusil znovu na cistom appenderovi a nic. -- Dusan
Re: log4j, vlastny appender a PropertyConfigurator
On Tuesday 11 of August 2009 15:52:16 Dusan Zatkovsky wrote: Attachujem zdrojaky a properties, mne pridu uplne v poriadku. -- Dusan log4j.rootLogger=INFO, S log4j.appender.S=test.SqlAppender2 log4j.appender.S.FOO = 12 log4j.appender.S.fOO = 13 log4j.appender.S.foo = 14 log4j.appender.S.FoO = 15 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package net.docfix.logging; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; //import net.docfix.logging.SqlAppender; /** * * @author msk */ public class Main { public static void main ( String args[] ) throws ClassNotFoundException { PropertyConfigurator.configure(Main.class.getResource(/log4j.properties)); Logger.getRootLogger().info ( f); } } package test; import org.apache.log4j.Layout; import org.apache.log4j.spi.ErrorHandler; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; public class SqlAppender2 implements org.apache.log4j.Appender { private Filter filter; private ErrorHandler errorhandler; private Layout layout; private String name; private String foo; @Override public void addFilter(Filter newFilter) { this.filter = newFilter; } @Override public Filter getFilter() { return filter; } @Override public void clearFilters() { } @Override public void close() { } @Override public void doAppend(LoggingEvent event) { System.out.println(event.toString()); } @Override public String getName() { return name; } @Override public void setErrorHandler(ErrorHandler errorHandler) { this.errorhandler = errorHandler; } @Override public ErrorHandler getErrorHandler() { return errorhandler; } @Override public void setLayout(Layout layout) { this.layout = layout; } @Override public Layout getLayout() { return this.layout; } @Override public void setName(String name) { this.name = name; } @Override public boolean requiresLayout() { return false; } public void setFoo(String s) { System.out.println(setFoo()); this.foo = s; } public String getFoo() { System.out.println(getFoo()); return this.foo; } }
Re: log4j, vlastny appender a PropertyConfigurator
Zdravim, toto nepomoze? http://www.javaworld.com/javaworld/jw-12-2004/jw-1220-toolbox.html?page=5 ya Dňa Ut, 2009-08-11 o 15:52 +0200, Dusan Zatkovsky napísal: On Tuesday 11 of August 2009 15:38:48 Pavel Savara wrote: Pokud si dobre pamatuju tak log4j vola set metody podle naming convention takze kdyz ve vasem appendru budete mit public void setFoo(String foo){this.foo = foo;} a public String getFoo()... No, to som z toho JDBCAppendera tak nejak vytusil, ale ked som to skusil, nefungovalo to. Teraz som to skusil znovu na cistom appenderovi a nic.
Re: log4j, vlastny appender a PropertyConfigurator
On Tuesday 11 of August 2009 16:03:37 Ján Valkovič wrote: Zdravim, toto nepomoze? http://www.javaworld.com/javaworld/jw-12-2004/jw-1220-toolbox.html?page=5 AHA! AppenderSkeleton! :) Ja implementujem Appender interface, o tomto som vobec nevedel. Diky 100x -- Dusan
Ako zabranit Castor XML escapingu
Dobry den, pouzivam Castor na serializaciu objektov do XML a jeden z atributov objektu je String. Tento string je XML. Ako sa da ocakavat castor to za string povazuje a tak vy-escapuje vsetky xml znaky. Z p sa stane lt;pgt;. Ja sa snazim tomu zabranit a neviem na to prist ako. Co som pozeral na nete, tak Castor nie co take nepodporuje. Tomas Studva
Re: Ako zabranit Castor XML escapingu
Castor nepouzivam, ale poohledl bych se v dokumentaci po CDATA marshalling Petr Prochazka 2009/8/11 Tomas Studva tstu...@gmail.com Dobry den, pouzivam Castor na serializaciu objektov do XML a jeden z atributov objektu je String. Tento string je XML. Ako sa da ocakavat castor to za string povazuje a tak vy-escapuje vsetky xml znaky. Z p sa stane lt;pgt;. Ja sa snazim tomu zabranit a neviem na to prist ako. Co som pozeral na nete, tak Castor nie co take nepodporuje. Tomas Studva