|
![]() |
#1 |
Registered User
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
|
Pomoc oko java hibernatea...
Pozdrav, trebao bih pomoć oko sljedeceg "problema". zamolio bih nekoga da mi preko hibernatea i mappinga u javi pokaze kako da napravim select querry na bazi... napravio sam update na bazu, al za select nikako da nadjem nesto na netu sta funkcionira i da primjenim na svome primjeru. Stavit cu najkrace klase da ne spamam. KLASA Posao public class Posao { private int sifra; private String opis; public int getSifra(){ return sifra; } public void setSifra(int sifra){ this.sifra=sifra; } public String getOpis(){ return opis; } public void setOpis(String opis){ this.opis=opis; } } mapping za nju Posao.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name ="Posao" table ="posao"> <id name = "sifra" column ="sifra" type="int"/> <property name="opis" column="opis" type="string"/> </class> </hibernate-mapping> i evo napokon unosa u bazu import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class UnosPosla { public void unosPosla(){ try { //hibernate konfiguracija Configuration cfg = new Configuration(); SessionFactory factory = cfg.configure().buildSessionFactory(); Session session = factory.openSession(); //unos podataka posao String sifra = Citac.getInput("Unesite sifru posla: "); String opis = Citac.getInput("Unesite opis posla: "); Posao p = new Posao(); p.setSifra(Integer.parseInt(sifra)); p.setOpis(opis); Transaction tx = session.beginTransaction(); session.saveOrUpdate(p); tx.commit(); System.out.println("Podaci uspjesno unešeni\n" +"SIFRA POSLA: "+sifra+"\nOPIS: "+opis); session.close(); } catch (Exception e){ System.out.println("greska: "+e); } } } Znaci to sve radi. citac je zasebna klasa naravno, nije potrebna tu... e sad mene zanima kako na isti takav nacin napraviti querry da se ispisu ta dva stupca iz baze... ja sam to ovako napravio kako cu staviti dolje..a treba mi kako to napraviti putem hibernatea import java.sql.*; public class IspisPoslova { public void ispisPoslova(){ Connection con = null; PreparedStatement pst = null; ResultSet rs = null; String url = "jdbc:mysql://localhost:3306/carnet"; String user = "mane"; String password = "fpcfvp"; try { con = DriverManager.getConnection(url, user, password); //pst = con.prepareStatement("SELECT * FROM zaposlenik"); pst= con.prepareStatement("SELECT * FROM POSAO"); rs = pst.executeQuery(); System.out.println("SIFRA\t\tOPIS"); System.out.println("---------------------------------------------"); while (rs.next()){ //pokupi podatke iz tablice zaposlenik int sifra = rs.getInt("SIFRA"); String opis = rs.getString("OPIS"); System.out.println(sifra+"\t\t"+opis); } } catch( SQLException se ) { System.out.println ("SQLError: " + se.getMessage () + " code: " + se.getErrorCode()); } catch( Exception e ) { System.out.println(e.getMessage()); e.printStackTrace(); } finally{ try{ rs.close(); pst.close(); con.close(); } catch(Exception e){ e.printStackTrace(); }} }} evo zamolio bih nekoga da mi napravi na ovom jednostvanom primjeru putem hibernatea kako to izvest.. ukoliko nije problem. hvala puno |
![]() |
![]() |
![]() |
#2 |
Premium
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
|
googlanjem: java hibernate query example prvi link ti daje primjer ![]() za tvoj slučaj bi to išlo ovako nekako: Code:
Query query = session.createQuery("from Posao"); List<Posao> list = query.list(); Zadnje izmijenjeno od: klint.istvud. 21.03.2012. u 18:48. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
Registered User
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
|
hvala klint...nasao sam ja dosta takvih primjera... ali ja kada to stavim u klasu ovu di mi je unos u bazu...kao dolje dodam samo da ispise nakon unosa sadrzaj baze... dodam tako dio koda i to nikad nece da radi. evo dodao sam ovo sta si ti napisao i javlja za List<Posao> list = query.list(); - type org.hibernate.mapping.list does not take parameters... googlao sam ja stvarno za to..al sta god sam nasao baca neki error...pitam tu jer nemam neko veliko znanje u javi, tek učim... i sad ne znam dal ja uopce mogu to koristiti unutar klase di je unos..pa prije session.close(); da to stavim :S ili sta? evo sad sam ovako napravio i importao sam java.util.list za taj List (ne hibernate.list)..nema gresaka..al naravno fali mi System.out da nesto ipise... naravno ako stavim System.out.println(z.getMat_br()); ce mi povuc pretpostavljam od zadnjega ili tako nesto... sta treba neku WHILE petlju napravit ili kako . i mislim da mi zbog Posao posao = new Posao(); i session.saveOrUpdate(posao); svaki put doda jedan posao bez naziva..ali mu da auto inc jer sam to nastiamo. znaci pretpostavljam da mi je to visak kod ispisa public class IspisPoslova{ public void ispisPoslova(){ try { //hibernate konfiguracija Configuration cfg = new Configuration(); SessionFactory factory = cfg.configure().buildSessionFactory(); Session session = factory.openSession(); Posao posao = new Posao(); Transaction tx = session.beginTransaction(); session.saveOrUpdate(posao); tx.commit(); Query query = session.createQuery("from Posao"); List<Posao> list = query.list(); Zadnje izmijenjeno od: Mane. 20.03.2012. u 13:32. |
![]() |
![]() |
![]() |
#4 |
Premium
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
|
za sve dobro slutiš ![]() - koristi java.util.List - za ispis probaj: Code:
System.out.println("Lista: " + list.toString()); Code:
for (Posao p : list) System.out.println(p); to izbaci van: Code:
Posao posao = new Posao(); Transaction tx = session.beginTransaction(); session.saveOrUpdate(posao); tx.commit(); |
![]() |
![]() |
![]() |
#5 |
Registered User
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
|
again puno ti hvala klint.... al to meni nikako nece da radi... izbaci mi za ovu klasu dolje... ovo: Posao@72f53805 Posao@78f14616 Posao@28308c62 znaci klasa se pokrene i nema gresaka...al ne izlista nista osim smeca..u tablici ima podataka sigurno. i ovo sam probao: System.out.println("Lista: " + list.toString());ista stvar samo u nizu ispise smece... ne znam dal sam ja lud ili sta ^^ edit: evo napokon sam uspio sa nekog primjerica izvuc ispis... pa ga implementirati kod sebe... ovako izgleda, malo mi je nejasan taj iterator doduse kako je napravljen al ajde dobro je, mozda uspijem to nekako "citkije" preradit ![]() public class IspisZaposlenika{ public void ispisZaposlenika(){ try { Configuration cfg = new Configuration(); SessionFactory factory = cfg.configure().buildSessionFactory(); Session session = factory.openSession(); List zaposlenici = session.find("from Zaposlenik"); System.out.println( zaposlenici.size() + " prijavljenih zaposlenika pronađeno" ); ----------------------------------------------------------- for ( Iterator iter = zaposlenici.iterator(); iter.hasNext(); ) { Zaposlenik zapo = (Zaposlenik) iter.next(); System.out.println(zapo.getMat_br()+"\t"+zapo.getIme()+ "\t\t"+zapo.getPrezime()); }---------------------------------------------------------------- session.close(); } catch (Exception e){ System.out.println("greska: "+e); } } } Zadnje izmijenjeno od: Mane. 21.03.2012. u 18:38. |
![]() |
![]() |
![]() |
#6 |
Premium
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
|
nije to smeće ![]() to ti je zato što se kod ispisa objekta (u ovom slučaju to je Posao) poziva metoda toString() a kako je ti vjerojatno nisi definirao u klasi Posao, onda ti se pozove toString metoda Object klase (to je klasa koju koju nasljeđuju sve klase u Javi) i ona ti vrati, to što ti vrati ![]() Znači u klasi Posao definiraj toString metodu koja će nadjačati toString metodu Object klase npr. ovako nešto: Code:
public class Posao { ... public String toString() { return "sifra=" + sifra + " | " + "opis=" + opis; } } p.s. radi preglednosti, programski kod koji pišeš tu na forumu stavljaj u CODE dio. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|