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

Play! Java Discussion :

Play, JPA et List


Sujet :

Play! Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut Play, JPA et List
    Bonjour à tous,
    J'ai un petit soucis avec une List et JPA.
    J'ai une classes Workspace contenant une liste de Service
    Celles-ci sont les suivantes:

    Workspace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Entity
    public class Workspace extends Model {
     
    	@OneToMany(mappedBy = "workspace", cascade = CascadeType.ALL)
    	public List<Service> services;
     
    	public Workspace(String login) {
    		this.services = new ArrayList<Service>();
    	}
    }
    Service :
    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
     
    @Entity
    public class Service extends Model{
     
    	@Required
    	public String name;
     
    	@ManyToOne
    	public Workspace workspace;
     
    	public Service(String name, Workspace workspace) {
    		this.name = name;
    		this.workspace = workspace;
    	}
     
    	public void copyService(User user){
    		Service service = new Service(name, user.workspace);
    		service.save();
    		user.workspace.services.add(this);
    		user.workspace.save();
    	}
     
    }
    Mais j'ai l'erreur suivante lors de l'instanciation d'un Workspace :
    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
     
    15:22:42,817 ERROR ~ Value too long for column "WORKSPACE BINARY(255)": "X'aced0005737200106d6f64656c732e576f726b7370616365fac44160643f4fb80200024c000873657276696365737400154c6a6176612f7574696c2f417272... (315)"; SQL statement:
    insert into User (id, civility, login, mail, name, password, role, surname, workspace) values (null, ?, ?, ?, ?, ?, ?, ?, ?) [90005-149]
    javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not insert: [models.User]
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153)
    	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
    	at play.db.jpa.JPABase._save(JPABase.java:37)
    	at play.db.jpa.GenericModel.save(GenericModel.java:184)
    	at models.User.add(User.java:48)
    	at controllers.Application.home(Application.java:85)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540)
    	at play.mvc.ActionInvoker.invoke(ActionInvoker.java:498)
    	at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:474)
    	at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:469)
    	at play.mvc.ActionInvoker.invoke(ActionInvoker.java:157)
    	at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:237)
    	at play.Invoker$Invocation.run(Invoker.java:265)
    	at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:217)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    	at java.lang.Thread.run(Thread.java:680)
    Pourquoi?

    Merci d'avance pour vos réponses

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut
    Salut,

    Le problème vient de ta classe User qui contient un champ workspace, il faudrait que tu montre le code de cette classe pour que je puisse te montrer l'erreur.

  3. #3
    Membre éclairé Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Par défaut
    J'ai pas testé mais essaye peut etre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void copyService(User user){
    		Service service = new Service(name, user.workspace);
    		create();
    		user.workspace.services.add(this);
    		user.workspace.save();
    	}
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void copyService(User user){
    		Service service = new Service(name, user.workspace).save();
    		user.workspace.services.add(service);
    		user.workspace.save();
    	}

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 107
    Par défaut
    bonjour,

    L'erreur est dans ce cas assez simple. Dans la classe User il existe effectivement un workspace. Or ce workspace n'est pas mappé avec une annotation @OneToMany ou @ManyToMany..

    D'ou l'erreur. Il essaye d'insérer un workspace sous format binaire dans le champs workspace du User. Or par defaut, si rien n'est précisé, ca passe en donné en format varchar de 255 caractères.

Discussions similaires

  1. Play, JPA et version des objets
    Par MaitreKaio dans le forum Play!
    Réponses: 0
    Dernier message: 10/09/2012, 12h04
  2. Réponses: 0
    Dernier message: 01/07/2010, 00h11
  3. play liste vidéo avec LanceAppliAssociée
    Par val_lala dans le forum WinDev
    Réponses: 5
    Dernier message: 30/01/2009, 09h45
  4. Creer une (play)list à partir d'une table
    Par lmico dans le forum Modélisation
    Réponses: 4
    Dernier message: 30/03/2008, 01h56
  5. Créer sa propre play liste
    Par Edoxituz dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 01/03/2006, 14h17

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