Ahoj,
vzdyt tam mas pretypovani na List?. Tak si nejsem jisty, jak jsi to
myslel. Jinak cyklus
for (Employee e : list) {
...
}
bude pred prekladem (ve fazi desuggaring) nahrazen cyklem
for (IteratorEmployee i = list.iterator(); i.hasNext(); ) {
Employee e = i.next();
...
}
Tedy cyklus
Ahojte,
skusim to napisat zrozumitelnejsie:
mam tabulku A, stlpce:
id
name
mam tabulku B, stlpce:
id
name
a potom mam tabulku AB (vazobna tabulka medzi A a B) , stlpce:
fk_a_id cudzi kluc do A
fk_b_id cudzi kluc do B.
priklad:
tabulka A:
1 Ivan
2 Peter
3 Jozo
Sorry, napsal jsem to spatne. Toto:
for (Object object : list) {
@SuppressWarnings(unchecked)
MapString, Object map = (MapString, Object)object;
// ...
}
projde na Win, ale na Linuxu ne. Toto:
for (Object object : (List?)list) { ... }
projde vsude.
Take mne zarazilo, proc to na tom
Pokud se nepletu, tak na windows je defaultní client VM, zatímco jinde
server VM. Liší se v tom kdy a jak provádějí kompilaci a optimalizace
JITem.
Takže teoreticky je možné, že -client provede ihned optimalizaci a
vyhodí přetypování na Employee, zatímco -server se pokusí alespoň
jednou provést
V byte kodu pretypovani neni. Metoda
protected static void process(ListEmployee list) {
for (Object o : list) {
System.out.println(o);
}
}
se prelozi takto:
protected static void process(java.util.List);
Code:
0: aload_0
1: invokeinterface #2, 1;
To je zajímavé, na Linuxu to v kódu je - ten řádek 22 s checkcast:
static void process(java.util.List);
Code:
0: aload_0
1: invokeinterface #2, 1; //InterfaceMethod
java/util/List.iterator:()Ljava/util/Iterator;
6: astore_1
7: aload_1
8: invokeinterface #3, 1;
To se mi nezdá. Tento bytecode nemůže vyhodit ClassCastException, IMHO
ten poůvodní bytecode vypadal jinak.
Kamil Podlešák
2010/8/10 Zdeněk Troníček troni...@fit.cvut.cz:
V byte kodu pretypovani neni. Metoda
protected static void process(ListEmployee list) {
for (Object o : list) {
Martin Kuba napsal(a):
To je zajímavé, na Linuxu to v kódu je - ten řádek 22 s checkcast:
Tak jsem si přečetl specifikaci na
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#259170
a myslím, že na Linuxu je to špatně. Specifikace totiž říká jasně, že
for (Object
Ja to ale vse prekladal na Windows, na tom Linuxu to jen spoustim.
ale když obě varianty přeložím a podívám se na vygenerovaný bytekód,
tak se liší práve o ten checkcast. Takže překladač rozepíše takto:
for(IteratorEmployee i = list.iterator();i.hasNext();) {
Object object
Ja pouzivam .getCurrentSession()
2010/8/8 Oto Buchta ta...@buchtovi.cz:
Má někdo z vás ideu, proč metoda transferSettings(Properties) třídy
org.jboss.hibernate.jmx.Hibernate
obsahuje
settings.setProperty(Environment.AUTO_CLOSE_SESSION, true);
místo očekávaného
Zdravím,
nestačilo by něco takového?
(píšu to z hlavy, určitě tam bude nějaká chyba)
Class A {
...
@ManyToMany
ListB bs
JPA QL:
SELECT DISTINCT a FROM A a JOIN a.bs b WHERE b.id IN (1,2)
Fafi
2010/8/10 Ivan Polak ivan.po...@f4s.sk:
Ahojte,
skusim to napisat zrozumitelnejsie:
mam tabulku
11 matches
Mail list logo