0

I already managed to connect to two MySQL databases via Wildfly. And to automatically create one table with its columns for each database via JPA. Now my Problem is I can´t insert data automatically into the databases.

Here my ManagerTrace.java class:

package hm.edu.chatServer.service;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class ManagerTrace {

    @PersistenceContext(unitName="tracetabelle")
    private EntityManager emt;

    public TraceProcess save(TraceProcess TraceProcess){
        emt.getTransaction().begin();
        emt.persist(TraceProcess);
        emt.getTransaction().commit();
        emt.close();

        return TraceProcess;
    }
}

`

Here my TraceProcess.java class:

package hm.edu.chatServer.service;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity // markiert Klasse als Entität
public class TraceProcess {

    @Id // Primary Key Attribut
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

      // Name des Client-Threads, der den Request absendet
      private String clientThreadName="test";

      // Name des Threads, der den Request im Server
      private String serverThreadName="test";

      // Nutzdaten (eigentliche Chat-Nachricht in Textform)
      private String message="test";

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getClientThreadName() {
        return clientThreadName;
    }

    public void setClientThreadName(String clientThreadName) {
        this.clientThreadName = clientThreadName;
    }

    public String getServerThreadName() {
        return serverThreadName;
    }

    public void setServerThreadName(String serverThreadName) {
        this.serverThreadName = serverThreadName;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
`

Here my ManagerCount.java class:

package hm.edu.chatServer.service;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless  
public class ManagerCount {

    @PersistenceContext(unitName="counttabelle")
    private EntityManager emc;

    public CountProcess create(CountProcess CountProcess){ 
        emc.getTransaction().begin();
        emc.persist(CountProcess);
        emc.getTransaction().commit();
        emc.close();

        return CountProcess;
    }
}
`

Here my CountProcess.java class:

package hm.edu.chatServer.service;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@SuppressWarnings("serial")
@Entity // markiert Klasse als Entität
public class CountProcess implements Serializable { 

    @Id //  Primary Key Attribut
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id;

    // Login-Name des Clients  
    private String userName ="testuser";

    // Anzahl an empfangenen Bestaetigungen der anderen Clients
    private int numberOfReceivedConfirms=2;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getNumberOfReceivedConfirms() {
        return numberOfReceivedConfirms;
    }

    public void setNumberOfReceivedConfirms(int numberOfReceivedConfirms) {
        this.numberOfReceivedConfirms = numberOfReceivedConfirms;
    }
}

And finally my persistence.xml:

<?xml version="1.0" encoding="utf-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="counttabelle" transaction-type="JTA">
    <jta-data-source>java:jboss/datasources/countDS</jta-data-source>
    <class>hm.edu.chatServer.service.CountProcess</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="url" value="jdbc:mysql://localhost/count?createDatabaseIfNotExist=true"></property>
      <property name="hibernate.archive.autodetection" value="ManagerCount" />
      <property name="hibernate.hbm2ddl.auto" value="create-drop" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    </properties>
  </persistence-unit>
  <persistence-unit name="tracetabelle" transaction-type="JTA">
    <jta-data-source>java:jboss/datasources/traceDS</jta-data-source>
    <class>hm.edu.chatServer.service.TraceProcess</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="url" value="jdbc:mysql://localhost/trace?createDatabaseIfNotExist=true"></property>
      <property name="hibernate.archive.autodetection" value="ManagerTrace" />
      <property name="hibernate.hbm2ddl.auto" value="create-drop" />
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    </properties>
  </persistence-unit>
</persistence>
jordiburgos
  • 5,964
  • 4
  • 46
  • 80
barwuah
  • 51
  • 8
  • 1
    It's not clear what the problem is, but you must not start a transaction, commit it, or close the EM. The EJB container does all that for you. That's the whole point of using JTA and stateless beans. – JB Nizet Dec 07 '16 at 22:31
  • Ahh ok Thanks very much! – barwuah Dec 08 '16 at 08:28
  • In my TraceProcess.java I have "private String clientThreadName="test";" and "private String serverThreadName="test";" and "private String message="test";". So it should insert the three test data into the database. But there is no insert into the database. Just the tables and the columns get created. – barwuah Dec 08 '16 at 08:30
  • The problem is my ManagerCount.class. The emc.persist(CountProcess); is not working. – barwuah Dec 08 '16 at 10:17

0 Answers0