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

JPA Java Discussion :

Java EE 6 exception persistance


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut Java EE 6 exception persistance
    Bonjour, je m'essaye à Java EE 6 et j'ai l'erreur suivante:
    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
    exception
     
    javax.servlet.ServletException: javax.persistence.TransactionRequiredException: Transaction is required to perform this operation (either use a transaction or extended persistence context)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
    	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)
    cause mère
     
    javax.faces.el.EvaluationException: javax.persistence.TransactionRequiredException: Transaction is required to perform this operation (either use a transaction or extended persistence context)
    	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    	javax.faces.component.UICommand.broadcast(UICommand.java:315)
    	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)

    j'ai cette erreur lorsque j'essaye d'enregistrer en base un widget créer, voici mon code:


    Widget.java
    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
    package knowledge.tuto1;
     
    import java.io.Serializable;
     
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
     
    @Entity
    public class Widget implements Serializable
    {
       private Long id;
       private String partNumber;
       private String name;
       private String description;
     
       @Id
       @GeneratedValue
       public Long getId()
       {
          return id;
       }
     
       public void setId(Long id)
       {
          this.id = id;
       }
     
       // demonstrates a column name override
       @Column(name = "partno")
       public String getPartNumber()
       {
          return partNumber;
       }
     
       public void setPartNumber(String partNumber)
       {
          this.partNumber = partNumber;
       }
     
       public String getName()
       {
          return name;
       }
     
       public void setName(String name)
       {
          this.name = name;
       }
     
       public String getDescription()
       {
          return description;
       }
     
       public void setDescription(String description)
       {
          this.description = description;
       }
     
       /** Default value included to remove warning.  Remove or modify at will.  */  
       private static final long serialVersionUID = 1L;
    }
    Mon controleur.java
    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
     
    package knowledge.tuto1;
     
    import javax.annotation.PostConstruct;
    import javax.ejb.TransactionManagement;
    import javax.enterprise.inject.Model;
    import javax.inject.Inject;
    import javax.persistence.EntityManager;
    import javax.validation.constraints.Digits;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Pattern;
     
    import org.hibernate.validator.constraints.Email;
    import org.hibernate.validator.constraints.NotEmpty;
     
    public @Model class Controleur {
    	private Widget widget;
    	private final String text = "";
     
    	private String letters;
     
    	private String numbers;
     
    	private String email;
     
    	@Inject
    	@WidgetRepository
    	EntityManager widgetRepository;
     
    	public Controleur() {
    	}
     
    	@PostConstruct
    	public void initialize() {
    		widget = new Widget();
    		System.out
    				.println(this.getClass().getSimpleName() + " was constructed");
    	}
     
    	public String getText() {
    		return text;
    	}
     
    	public Widget getWidget() {
    		return widget;
    	}
     
    	public void setWidget() {
    		widgetRepository.persist(widget);
    	}
     
    }


    et mon fichier xhtml
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:h="http://java.sun.com/jsf/html"
       template="/WEB-INF/templates/default.xhtml">
       <ui:define name="content">
          <h1>Hello World!</h1>
          <p>Your CDI bean <code>HelloWorld</code> says <span style="color: blue;">#{controleur.text}</span> using the Unified EL.</p>
     
          <h:form id="bv">
             <h2>Bean Validation examples</h2>
             <p>Enforces annotation-based constraints defined on the model class.</p>
             <table>
                <tr>
                   <th style="text-align: right;">
                      <h:outputLabel for="part" value="Partner:"/>
                   </th>
                   <td>
                      <h:inputText id="part" value="#{controleur.widget.partNumber}"/>
                      <h:message for="part" errorClass="invalid"/>
                   </td>
                </tr>
                <tr>
                   <th style="text-align: right;">
                      <h:outputLabel for="name" value="Name:"/>
                   </th>
                   <td>
                      <h:inputText id="name" value="#{controleur.widget.name}"/>
                      <h:message for="name" errorClass="invalid"/>
                   </td>
                </tr>
                <tr>
                   <th style="text-align: right;">
                      <h:outputLabel for="desc" value="Description:"/>
                   </th>
                   <td>
                      <h:inputText id="desc" value="#{controleur.widget.description}"/>
                      <h:message for="desc" errorClass="invalid"/>
                   </td>
                </tr>
             </table>
             <p>
                <h:commandButton id="check" action="#{controleur.setWidget()}" value="Check values"/>
                <h:outputText value=" All clear!" rendered="#{facesContext.postback and empty facesContext.messageList}" style="color: green;"/>
             </p>
          </h:form>
          <h2>Widgets</h2>
          <h:dataTable var="_widget" value="#{widgets}">
             <h:column>
             <f:facet name="header">Id</f:facet>
                #{_widget.id}
             </h:column>
             <h:column>
                <f:facet name="header">Part Number</f:facet>
                #{_widget.partNumber}
             </h:column>
             <h:column>
                <f:facet name="header">Name</f:facet>
                #{_widget.name}
             </h:column>
             <h:column>
                <f:facet name="header">Description</f:facet>
                #{_widget.description}
             </h:column>
          </h:dataTable>
       </ui:define>
    </ui:composition>

    erreur lors de l'appel à la methode setWidget()

    merci beaucoup.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le persistence.xml ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut
    voila:
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.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_1_0.xsd">
       <persistence-unit name="widgets">
          <!-- You can force a non-default JPA provider using one of these declarations -->
          <!--
          <provider>org.hibernate.ejb.HibernatePersistence</provider>
          <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
          -->
     
          <!-- Use this data source name for JBoss AS -->
          <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
          <!-- Use this data source name for Glassfish -->
          <!--
          <jta-data-source>jdbc/__default</jta-data-source>
          -->
          <properties>
             <!-- Properties for Hibernate (default provider for JBoss AS) -->
             <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
             <property name="hibernate.show_sql" value="true"/>
             <property name="hibernate.transaction.flush_before_completion" value="true"/>
             <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
     
             <!-- Properties for EclipseLink (default provider for GlassFish) -->
             <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
             <property name="eclipselink.logging.level" value="FINE"/>
     
          </properties>
       </persistence-unit>
    </persistence>

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut
    je sauvegarde widget en base de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE IF NOT EXISTS `widget` (
      `id` bigint(20) NOT NULL,
      `description` varchar(255) DEFAULT NULL,
      `name` varchar(255) DEFAULT NULL,
      `partno` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    la ligne est incomplète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <persistence-unit name="..." transaction-type="JTA">
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 74
    Par défaut
    Merci de votre réponse, pourquoi doit on utiliser transaction-type="JTA"?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2011, 10h27
  2. java lang.NumberFormat Exception
    Par coold dans le forum JPA
    Réponses: 4
    Dernier message: 07/02/2010, 13h09
  3. erreur java.sql.sql Exception
    Par sana... dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 14/07/2008, 13h36
  4. JAVA Net Connect Exception
    Par diegosaure dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2008, 08h25
  5. Réponses: 2
    Dernier message: 05/06/2004, 00h12

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