Hirdetés

2024. június 4., kedd

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#12041) hoopy válasza lanszelot (#12040) üzenetére


hoopy
újonc

Erre gondoltam, de akkor így megtaláltad két lépésben.

(#12042) lanszelot


lanszelot
addikt

Most vettem észre hogy az java és nem java script. Nem láttam szemüveg nélkül. Bocsánat :B

[ Szerkesztve ]

(#12043) Aethelstone válasza Taoharcos (#12005) üzenetére


Aethelstone
addikt

Teljesen antipattern. Engedd el.

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#12044) Ablakos


Ablakos
őstag

Mi a különbség két referencia között new ArrayList vagy anélkül?
Human jenny = new Human(18, "Jenny");
Human jeff = new Human(17, "Jeff");
Human jill = new Human(21, "Jill");
List<Human> people = new ArrayList<>(Arrays.asList(jenny, jeff, jill));

(#12045) gygabor88 válasza Ablakos (#12044) üzenetére


gygabor88
tag

A new ArrayList nélkül olyan listát kapnál, aminek nem módosítható a mérete.

(#12046) Ablakos válasza gygabor88 (#12045) üzenetére


Ablakos
őstag

Köszi.

(#12047) Ablakos


Ablakos
őstag

Sehogy nem bírom a map első generikus típust stringre kényszeríteni. Mindenképpen az Object-et erőlteti. Object típussal működik, de nem értem a pontos megoldást.

Stream<String> input = Files.lines(Paths.get("words.txt"));

Map<String, List<String>> a = // csak Objectként fordul le String helyett
        input.map(line -> line.split(" "))
                    .flatMap(array -> Arrays.stream(array))
                    .collect(Collectors.groupingBy(d -> d.charAt(0)));

/* .forEach((c, dl) -> {
System.out.print("first character: " + c + " =>");
dl.forEach(d -> System.out.print(d+ ", "));
//System.out.println();
});
*/

[ Szerkesztve ]

(#12048) Ablakos válasza Ablakos (#12047) üzenetére


Ablakos
őstag

Elnézést, tárgytalan.
Csak egy üres stringet kell hozzá toldani a charAt+hez. Ezt nagyon elnéztem. :B

(#12049) Taoharcos


Taoharcos
aktív tag

Sziasztok!
Karakter kódolási problémával kapcsolatban kérdeznék.
Java 17 és Spring 3.2 verziókat használok.
Egy Spring Boot-os alkalmazás fejlesztése Windows alatt történik. Egy .csv file-t készít amit le lehet tölteni. Windows helyesen jelenek meg a magyar karakterek. Viszont ha feltelepítem egy hardenelt Ubuntura, akkor a magyar karakterek helytelenül jelennek meg. Elvileg minden már csak UTF8-at használ, de nincs elképzelésem sem, hogy mi lehet a probléma.

(#12050) Taoharcos válasza Taoharcos (#12049) üzenetére


Taoharcos
aktív tag

Elnézést, pontatlan voltam, a Windows ISO-8859-2-t használ.
Szóval az lenne a kérdésem, hogy lehetne Java 17 alatt ISO-8859-2-es karakter készletet használni?

[ Szerkesztve ]

(#12051) Szmeby válasza Taoharcos (#12050) üzenetére


Szmeby
tag

Attól függ, milyen eszközzel olvasod fel a fájlt.

Akárhogy is, a fájlban a szöveg byte-ok halmaza, azt valamilyen karakterkészletre kell alakítani felolvasáskor. Akár bytearrayt, akár inputsreamet, akár valamilyen fancy toolt használsz, ami ezekre épül, mindegyikben kell legyen (az értelmesekben legalábbis) olyan opció, ahol megadhatod a charsetet is. Vegyük például a Files::lines metódust ő is vár egy charsetet, megadhatja az, akinek erre van igénye.

A nio StandardCharsets osztályában megtalálod a gyakran használt charseteket, bár mondjuk a latin2 szerintem nincs köztük, de a nio ismeri azt is. Legrosszabb esetben stringként megadod a Charset::forName factory metódusnak és máris van egy charseted, amit használhatsz az olvasásnál. Csak jól írd be a nevét.

Egyébként, ha lehetőséged van rá, inkább pl. UTF8-ban generáld ki azt a csv-t, az sokkal univerzálisabb.

(#12052) bucc


bucc
csendes tag

sziasztok
PTI-s hallgató vagyok és nagyon nem megy a java, külön óra céljából keresnék prog ban jártas fórumtársat.

(#12053) lanszelot


lanszelot
addikt

Hello,
[link]
Ha letekerem a zöld box-ban lévő szöveget, hogyan tudok a tetejére vissza ugrani, ha egy sima szövegre klikkelek.
Nem "a" tag, és nem gomb.

(#12054) lanszelot válasza lanszelot (#12053) üzenetére


lanszelot
addikt

Bocsánat, véletlen írtam ide, nem volt rajtam a szemüveg :B
Már nem tudtam törölni

(#12055) Tothg86


Tothg86
tag

Sziasztok

Tudtok esetleg egy jó tutorialt Hibernate-hez? Amiket eddig találtam, egyikből sem jutottam közelebb a témához.

Köszönöm!

(#12056) floatr válasza Tothg86 (#12055) üzenetére


floatr
veterán

Biztosan vannak jobb források, de sok év után is általában a Baeldung-on kötök ki, ha valamire nem emlékszem. Itt van egy Spring Data JPA guide lista, sima hibernate-et kezdésnek nem annyira ajánlanám. Érdemes a cikkek alján lévő githubos példákat is végignézni.

(#12057) Tothg86 válasza floatr (#12056) üzenetére


Tothg86
tag

Köszi!
Egy konkrét kérdésem is lenne.
Van egy munkahelyi tábla, amiben nincsen auto increment ID, nincs semmilyen primary key sem. Szembesültem azzal (ha jól értem), hogy a hibernate megköveteli az egyértelmű azonosítást. Mivel nincs a táblában ID, ezért egy darab azonosítót nem tudok hozzárendelni. Olvastam, hogy van lehetőség összetett kulcs hozzárendélésére az EmbeddedID annotation-nel.
Jól értem? Egy netes példában az volt, hogy egy külön osztályt hozok létre a kulcsnak, és itt jelölöm, hogy @Embeddable. De ez már beleszámít a mappingbe?

(#12058) floatr válasza Tothg86 (#12057) üzenetére


floatr
veterán

Ebben a cikkben leírnak két lehetőséget, de én is használok több munkahelyi projekten összetett kulcsot. Az EmbeddedId-t javaslom, de pár dolgot nem árt észben tartani.
Az ID-t így te adod meg, nem a hibernate generálja. Emiatt egy új rekord mentésénél (save/saveOrUpdate) a hibernate egy selectet fog kiadni, hogy leellenőrizze, van-e már azzal a kulccsal adat a DB-ben. Ezt ki lehet kerülni mondjuk egy EntityManager.persist(...) hívással egy custom repo implementációban, ha te tudod garantálni a PK egyediségét. Ha sok adatot importálsz, problémát tud okozni.
Az ilyen táblák általában kapcsoló/kapcsolatleíró táblák, és az összetett kulcs elemei külső kulcsok (FK), amik más táblákra mutatnak. Ilyenkor a hibernate csak trükközve tudja leírni a relációt másodlagos mappeléssel, vagy a kulcsban mappelt relációval, bár nem mindig van szükség arra, hogy össze tudj kapcsolni kódban is két objektumot.

[ Szerkesztve ]

(#12059) Tothg86 válasza floatr (#12058) üzenetére


Tothg86
tag

Köszönöm szépen!
Az az egy nem világos most, hogy egyelőre egy tök szimpla lekérdezéshez, a példában szereplő két mezőt (account number és account type) ugyanúgy kell mappelnem az account osztályban, hogy melyik oszlopban van az adatbázisban? Én úgy szoktam, hogy nem bizom a hibernatere, hanem mindig megadom melyik adatbázis oszlophoz mappelje.

(#12060) floatr válasza Tothg86 (#12059) üzenetére


floatr
veterán

Valahogy így:

@Embeddable
public class AccountId {
    private String accountNumber;
    private String accountType;
    ...
}

@Entity
public class Account {
    @EmbeddedId
    @AttributeOverrides({
        @AttributeOverride(name="accountNumber", column=@Column(name="account_number")),
        @AttributeOverride(name="accountType", column=@Column(name="account_type"))
    })
    private AccountId id;
    ...
}

az @AttributeOverrides szekciót azért tettem bele, mert ezzel pontosan el tudod nevezni a DB mezőket. A hibernatenek van olyan NamingStrategy-je (jpa/component-path), hogy hajlamos elécsapni a generált neveknek prefixként azt, hogy "id_"

[ Szerkesztve ]

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.