-
naim
Cześć, mam taki problem - robie sobie Encje (POJO) i chce ją wrzucic do bazy ale nic sie nie insertuje, DDL sie wykonuje natomiast zaden DML juz nie - moze wy bedziecie wiedziec co jest nie tak?
persistence.xml
------------------------------ --
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns=" http://java.sun.com/xml/ns/per sistence" xmlns:xsi=" http://www.w3.org/2001/XMLSche ma-instance"
xsi:schemaLocation=" http://java.sun.com/xml/ns/persiste... http://java.sun.com/xml/ns/per sistence/persistence_1_0.xsd">
<persistence-unit name="ExamLocalPU" transaction-type="RESOURCE_LOC AL">
<!-- <provider>org.hibernate.ejb.Hi bernatePersistence</provider> -->
<properties>
<property name="hibernate.archive.autode tection" value="class"/ >
<property name="hibernate.show_sql" value="true"/ >
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.generate_stati stics" value="true"/>
<property name="hibernate.cache.use_quer y_cache" value="false"/>
<property name="hibernate.cache.use_seco nd_level_cache" value="false"/>
<property name="hibernate.connection.dri ver_class" value="com.mysql.jdbc.Driver"/ >
<property name="hibernate.connection.url " value="jdbc:mysql://localhost: 3306/exam"/ >
<property name="hibernate.connection.use rname" value="root"/ >
<property name="hibernate.connection.pas sword" value=""/ >
<property name="hibernate.dialect" value="org.hibernate.dialect.M ySQLDialect"/ >
<property name="hibernate.hbm2ddl.auto" value="update"/ >
<property name="hibernate.connection.aut ocommit" value="true"/ >
</properties>
</persistence-unit>
</persistence>
Klasa encji
------------------------
@Entity
public class Student {
@Id
@GeneratedValue
private Long id;
private String pesel;
private String firstname;
private String lastname;
public Student(){}
//settery i gettery
}
Klasa testowa
----------------------------
public class HibernateTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManage rFactory("ExamLocalPU");
EntityManager em = emf.createEntityManager();
Student student = new Student();
student.setFirstname("Piotr");
student.setLastname("Szulawski ");
student.setPesel("12345678901" );
em.persist(student);
}
}
W logu nie mam zadnych bledow, widze wyraznie ze ddl sie tworzy i w bazie pojawia sie struktura -
Koziołek [brat Javowiec]
Sprawdź czy masz ustawione autocommit na true. Generalnie tranzakcje zatwierdzać należy ręcznie. -
naim
<property name="hibernate.connection.aut ocommit" value="true"/ >
Mam:)
Wlasnie nie chcialem sie bawic w reczne zatwierdzanie transakcji - wolalem to oddelegowac do hibernate
//EDIT
Jednak po dodaniu transakcji dziala:)
Dzieki za rade!
Rozwiazanie:
public class HibernateTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManage rFactory("ExamLocalPU");
EntityManager em = emf.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
Student student = new Student();
student.setFirstname("Piotr");
student.setLastname("Szulawski ");
student.setPesel("SOMEPESEL");
em.persist(student);
transaction.commit();
em.close();
emf.close();
}
} -
-
the_javu
Co prawdopodobnie oznacza, że bez transakcji należało stosować em.flush(). -
naim
Si,
problem z propertiesem z persistence.xml okazał się trywialny - aplikacja standalone nie zdeployowana na serwerze nie ma transakcji obslugiwanych tak przez properties. po deployu na serwer dziala poprawnie:) -
Toples
wybaczcie, że się podłącze do tematu, ale nie korzystam z grona, a już na pewno nie do takich problemów; ], a że padł temat hibernate'a to może akurat ktoś wie i pomoże...
mianowicie mi się insertuje fajnie tylko dane zapisują się do nieodpowiednich kolumn... jakiś pomysł czemu?
inserta wykonuję przez procedurę składowaną w sposób następujący:
@SQLInsert(callable= true, sql="{CALL RecordEventErrorCounters(?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?)}")
dodatkowo przy każdym getterze zmiennej POJO mam adnotację:
@Column(name = "nazwa_kolumny")
Nazwy na pewno są dobrze bo zostały wygenerowane, z resztą dla pewności sprawdziłem.
Może ktoś miał podobną sytuację? Domyślam się, że problem powstał dlatego, że insertuję przez stored procedure (więc adnotacja @column tutaj nie pomoże). Po przedebugowaniu widać, że układa zmienne alfabetycznie do swojej tablicy fields i z niej przepisuje te wartości argumentom procedury. Teraz pytanie czy ktoś potrafi przekazywać do procedury składowanej argumenty nazwane? Jest jakiś sposób, aby zamiast znaków zapytania wstawić nazwy zmiennych? Jakoś powiązać je z adnotacjami przy getterach?
pomóżcie; )
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

