Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Java na webovém serveru: hlasování a grafy v SVG

Franta Kučera aura:90
29. 4. 2010 16:10 Nový

Hlasování

celé vlákno

Upravil jsem SELECT tak, že je možné hlasovat z jedné IP adresy každý den.

BTW: jak řešíte tenhle problém vy? Používáte k identifikaci hlasujících uživatelů IP adresy nebo něco jiného? Dovolujete hlasovat víckrát nebo jen jednou, případně jednou za určitý časový úsek?

JK
JK (neregistrovaný) ---.242.broadband5.iol.cz
2. 5. 2010 16:10 Nový

Re: Hlasování

celé vlákno

Pouziti IP mi neprijde vhodne, hlavne kvuli natu. Osvedcila se mi captcha v kombinaci z cookie – kdyz se uzivatel snazi, tak zahlasuje nekolikrat, ale vyhnu se tisucum hlasu pripadneho bota co by zkousel free proxy…

Franta Kučera aura:90
3. 5. 2010 16:01 Nový

Re: Hlasování

celé vlákno

Ale to je hodně uživatelsky nepřívětivé – obávám se, že v takovém případě se většina lidí na hlasování vykašle.

xylon
xylon (neregistrovaný) ---.antik.sk
7. 5. 2010 15:56 Nový

dalsia inspiracia

celé vlákno

chcel by som poprosit autora ci by vedel spravit clanok na pracu s aplikacnou logikou. Bud ejb alebo spring. Velmi by sa nieco take hodilo :).

Tom Oli
Tom Oli (neregistrovaný) ---.hk.gin.cz
1. 6. 2010 8:26 Nový

JPA native query

celé vlákno

Dobrý den, v poslední části článku se používá native query např. takto:
Query q = em.createNati­veQuery(NATIVE_SQL);
Trochu jsem si stím hrál a narazil jsem na problém, který se mi nepodařilo vyřešit (resp. nikde jsem nenalezl odpověď).
Představte si, že chci z tabulky hlasovani vypsat všechny ip_adresa.
Vytvořím select : SELECT ip_adresa as ip from hlasovani
potom si nechám vrátit list
List<Object[]> result = q.getResultList();
problém nastáva, když chci vypysovat jednotlivé adresy
for (Object[] row : result) {
if(row[0] instanceof Character){
Sysout…(„to snad neni mozne“);bohuzel realita
}
}
- objekty, které jsou uloženy v řádcích (row) jsou typu Character, nikoli jak jsem předpokládal String. Zjednodušeně řečeno se do nich uloží jen první znak ip_adresy. Přetypování samozřejmě nefunguje.
V Hibernatu se tento problém řeší poměrně jednoduše:
SQLQuery q = hibernateSessi­on.createSQLQu­ery(NATIVE_SQL);
q.addScalar( „ip“, Hibernate.STRIN­G);
nastaví se typ výsledku
a v listu je pak doopravdy objekt typu String. V JPA jsem tuto možnost nenašel. Pokud se scalar v Hibernatu nenastaví, opět defaultně vrací Character.
Možná se to může zdát jako blbost a někdo bude namítat, proč si rovnou nenechám vrátit entitu hlasovani, nebo proč to nevyřeším v JPQL, ale pokud dělám složitější selecty, kde chci využít databázových funkcí a vybírám data např. z 5 tabulek a potřebuju je pohromadě vypsat, tak je JPQL dost neefektivní oproti native (query). (dále to nebudu rozpitvávat)
Konkrétní problém mám v Hiberntate 3.4 – 3.5 JPA impl a DB Oracle 10g s tabulkovými atributy typu CHAR a VARCHAR.
Pokud znáte nějaké jednoduché řešení dejte prosím vědět, jinak velice pěkný článek.

Zasílat nově přidané příspěvky e-mailem