M
Moinuell
Gast
Hallo,
ich versuche mich gerade an GWT, Request Factory + JPA with Hibernate.
Hierbei habe ich Probleme mit JPA / Hibernate.
Ich möchte Daten in meiner lokalen postgres Db speicher.
Scheintbar funktioniert zwar alles, aber eben nur scheinbar.
Ich erstelle eine EntityManagerFactory
einen Entity Manager
Objekt persistieren
Soweit funktioniert auch alles.
Persistieren von Objekten geht zwar, aber die Daten landen nicht in meiner lokalen Datenbank.
D.h. die Daten werden irgendwo anders gespeichert, ich kann aber nicht rausfinden wo :/
Zudem weiß ich nicht genau, was ich alles in der persistence.xml angeben muss.
Gebe ich z.B. als Provider: <provider>org.hibernate.ejb.HibernatePersistence</provider>
an, läuft es schon nicht mehr.
Habe erst mit Hibernate angefangen... Wäre super wenn mir hier jemand helfen könnte.
Gruß,
Manuel
Hier noch etwas Code, wenn ihr noch mehr Infos braucht, sagt bescheid.
Meine Entity Class
Meine persistence.xml
ich versuche mich gerade an GWT, Request Factory + JPA with Hibernate.
Hierbei habe ich Probleme mit JPA / Hibernate.
Ich möchte Daten in meiner lokalen postgres Db speicher.
Scheintbar funktioniert zwar alles, aber eben nur scheinbar.
Ich erstelle eine EntityManagerFactory
Code:
private static final EntityManagerFactory emfInstance = Persistence.createEntityManagerFactory("kunde");
einen Entity Manager
Code:
EMF.createEntityManager();
Objekt persistieren
Code:
em.persist(Worker);
Soweit funktioniert auch alles.
Persistieren von Objekten geht zwar, aber die Daten landen nicht in meiner lokalen Datenbank.
D.h. die Daten werden irgendwo anders gespeichert, ich kann aber nicht rausfinden wo :/
Zudem weiß ich nicht genau, was ich alles in der persistence.xml angeben muss.
Gebe ich z.B. als Provider: <provider>org.hibernate.ejb.HibernatePersistence</provider>
an, läuft es schon nicht mehr.
Habe erst mit Hibernate angefangen... Wäre super wenn mir hier jemand helfen könnte.
Gruß,
Manuel
Hier noch etwas Code, wenn ihr noch mehr Infos braucht, sagt bescheid.
Meine Entity Class
Code:
package de.mash.project.server;
import java.util.List;
import javax.jdo.annotations.Transactional;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
@Entity
@Table(name = "Worker")
public class Worker {
public static Worker findWorker(Long id) {
// if (id == 0) {
return null;
// }
// EntityManager em = entityManager();
// try {
// Worker worker = em.find(Worker.class, id);
// return worker;
// } finally {
// em.close();
// }
}
@Transient
protected Object[] jdoDetachedState;
// @Id
// @GeneratedValue(generator = "auto_increment")
// @GenericGenerator(name = "auto_increment", strategy = "increment")
// @Column(name = "id")
// private int id;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "salary")
private int salary;
public Worker() {
}
public Worker(String fname, String lname, int salary) {
this.firstName = fname;
this.lastName = lname;
this.salary = salary;
}
public Long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String first_name) {
this.firstName = first_name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String last_name) {
this.lastName = last_name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public static Long countWorkers() {
return 2l;
}
public Integer getVersion() {
return 1;
}
public void persist() {
EntityManager em = entityManager();
try {
// em.getTransaction().begin();
em.persist(this);
// em.flush();
// em.getTransaction().commit();
} catch (Exception e) {
int i = 1;
} finally {
em.close();
}
em = entityManager();
final List<Worker> list = em.createQuery("select p from Worker p").getResultList();
System.out.println(list.size());
for (Worker current : list) {
System.out.println(current.getFirstName() + " " + current.getLastName() + " " + current.getSalary());
}
em.close();
}
public static final EntityManager entityManager() {
return EMF.get().createEntityManager();
}
}
Meine persistence.xml
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="kunde" transaction-type="RESOURCE_LOCAL">
<class>de.mash.project.server.Worker</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/dev_mash" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="m4nu3l" />
<property name="hibernate.default_schema" value="public" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>