IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

EJB3 eclipseLink et JBOSS EAP6 avec POSTGRES insert non effectuée


Sujet :

Java EE

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 934
    Points
    934
    Par défaut EJB3 eclipseLink et JBOSS EAP6 avec POSTGRES insert non effectuée
    Bonjour

    J'ai récupéré un projet que je migre de MYSQL vers POSTGRES et sous JBOSS EAP6 6.4.22
    Lorsque dans ma form je cherche à inserer un nouvel enregistrement
    * je n'ai aucun message d'erreur
    * et l'insert n'est pas effectué dans POSTGRES
    * mais la sequence qui sert de clef primaire est bien incrementée !!

    j'utilise org.eclipse.persistence.jpa.PersistenceProvider et POSTGRES12

    Où est mon erreur ? Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	private static final Log logger = LogFactory.getLog(AuthorService.class);
     
    	@PersistenceContext(unitName = "bookstorePersistenceUnit")
    	private EntityManager em;
     
    	@Override
    	protected EntityManager getEntityManager() {
    		return em;
    	}
     
    	public AuthorService() {
    		super(Author.class);
    	}
     
    	@Override
    	public void create(Author author) {
    		Set<Book> authoredBooks = author.getAuthoredBooks();
    		if (authoredBooks != null && authoredBooks.size() > 0) {
    			for (Book book : authoredBooks) {
    				if (book.getAuthors() == null) {
    					book.setAuthors(new HashSet<Author>());
    				}
    				book.getAuthors().add(author);
    				em.merge(book);
    			}
    		}
    		em.persist(author);
    		logger.info("apres em.persist(author); persist de Author");
    	}
    standalone.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     <subsystem xmlns="urn:jboss:domain:transactions:1.5">
                <core-environment>
                    <process-id>
                        <uuid/>
                    </process-id>
                </core-environment>
                <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
                <coordinator-environment default-timeout="300"/>
            </subsystem>
     
      <datasource jta="true" jndi-name="java:jboss/datasources/book" pool-name="book" enabled="true" use-java-context="true" use-ccm="false">
                        <connection-url>jdbc:postgresql://localhost:5432/book</connection-url>
                        <driver>postgres</driver>
                        <security>
                            <user-name>postgres</user-name>
                            <password>admin</password>
                        </security>
                    </datasource>


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    @Entity
    @Table(name = "AUTHORS")
    public class Author implements Serializable {
     
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue( strategy = GenerationType.AUTO, generator = "authors_seq_gen3" )
        @SequenceGenerator( name="authors_seq_gen3", sequenceName="AUTHORS_SEQ_GEN3", initialValue=5, allocationSize=1 ) //create sequence AUTHORS_SEQ_GEN3 START WITH 5 INCREMENT BY 1; //select currval('AUTHORS_SEQ_GEN3'); select nextval('AUTHORS_SEQ_GEN3');
     
     
        @Column(name = "id")
        private Long id;
        @Size(min = 1, max = 50)
        @NotNull
        private String firstName;
        @Size(min = 1, max = 50)
        @NotNull
        private String lastName;
        @ManyToMany(mappedBy = "authors", fetch = FetchType.EAGER)
        private Set<Book> authoredBooks;
     
        public Long getId() {
            return id;
        }
     
        public void setId(Long id) {
            this.id = id;
        }
     
        public String getFirstName() {
            return firstName;
        }
     
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
     
        public String getLastName() {
            return lastName;
        }
     
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
     
        public Set<Book> getAuthoredBooks() {
            return authoredBooks;
        }
     
        public void setAuthoredBooks(Set<Book> authoredBooks) {
            this.authoredBooks = authoredBooks;
        }
     
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((id == null) ? 0 : id.hashCode());
            return result;
        }
     
        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            Author other = (Author) obj;
            if (id == null) {
                if (other.id != null) {
                    return false;
                }
            } else if (!id.equals(other.id)) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "Author{" + "firstName=" + firstName + ", lastName=" + lastName + '}';
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.jee.tutorial.bookstore.ejb;
     
    import java.util.List;
    import javax.persistence.EntityManager;
     
    /**
     *
     * @author ikolev
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    public abstract class JPAService<T> {
        private Class<T> entityClass;
     
        public JPAService(Class<T> entityClass) {
            this.entityClass = entityClass;
        }
     
        protected abstract EntityManager getEntityManager();
     
        public void create(T entity) {
            getEntityManager().persist(entity);
        }
     
        public void edit(T entity) {
            getEntityManager().merge(entity);
        }
     
        public void remove(T entity) {
            getEntityManager().remove(entity);
        }
     
        public T find(Object id) {
            return getEntityManager().find(entityClass, id);
        }
     
    	public List<T> findAll() {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            cq.select(cq.from(entityClass));
            return getEntityManager().createQuery(cq).getResultList();
        }
     
        public List<T> findRange(int[] range) {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            cq.select(cq.from(entityClass));
            javax.persistence.Query q = getEntityManager().createQuery(cq);
            q.setMaxResults(range[1] - range[0]);
            q.setFirstResult(range[0]);
            return q.getResultList();
        }
     
        public int count() {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
            cq.select(getEntityManager().getCriteriaBuilder().count(rt));
            javax.persistence.Query q = getEntityManager().createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        }            
    }

    persistence.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" 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_2_0.xsd">
      <persistence-unit name="bookstorePersistenceUnit" transaction-type="JTA">
         <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:jboss/datasources/book</jta-data-source>
        <class>com.jee.tutorial.bookstore.jpa.Author</class>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
    		<property name="eclipselink.logging.level.sql" value="FINE" />
    		<property name="eclipselink.logging.parameters" value="true" />
      </properties>
      </persistence-unit>
    </persistence>


    Dans les modules de JBOSS

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <module xmlns="urn:jboss:module:1.1" name="org.eclipse.persistence">
        <resources>
            <resource-root path="eclipselink-2.7.7.jar">
    		<resource-root path="javax.persistence-api-2.2.jar">
               <filter>
                  <exclude path="javax/**" />
               </filter>
            </resource-root>
        </resources>
     
    <dependencies>
          <module name="javax.api"/>
          <module name="javax.persistence.api"/>
          <module name="javax.transaction.api"/>
          <module name="javax.validation.api"/>
          <module name="javax.xml.bind.api"/>
          <module name="org.antlr"/>
          <module name="org.apache.commons.collections"/>
          <module name="org.dom4j"/>
          <module name="org.javassist"/>
          <module name="org.jboss.logging"/>
          <module name="org.postgresql"/>
       </dependencies>
    </module>


    Je pense que mon soucis provient de la gestion ou non gestion des transactions par mon JBOSS EAP6

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 934
    Points
    934
    Par défaut
    Re A priori cela fonctionne
    3 elements
    A renommer la contrainte Postgres ALTER INDEX authors_pkey RENAME TO authors_pkeyb.

    B dans persistence.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="eclipselink.target-server" value="JBoss" />

    C faire la compile avec le SkipTest >mvn clean install -DskipTests?, sinon la compilation ne passe pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Data] Insertion non effectué de Blob
    Par wajdopovitch dans le forum Spring
    Réponses: 1
    Dernier message: 17/07/2009, 10h16
  2. Insertion non effectué de Blob
    Par wajdopovitch dans le forum Hibernate
    Réponses: 0
    Dernier message: 16/07/2009, 10h40
  3. [EJB3] Deployer sur JBOSS un EJB(3.0) avec Oracle
    Par metalpetsFR dans le forum Wildfly/JBoss
    Réponses: 11
    Dernier message: 16/08/2007, 09h42
  4. Problème avec un INSERT
    Par nnj dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/08/2006, 15h51
  5. [MFC] problème avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    Réponses: 12
    Dernier message: 11/06/2004, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo