Vous n'êtes pas identifié(e).
Pages : 1
pour être plus clair,j'avais une base de données MySQL dont les é,ç... ne s'affichent pas correctement,j'ai fais une migration à travers un programme java ( c'est pas très important ) , Jusqu’à mnt tt va bien
maintenant je voudrai résoudre ce problème dans ma nouvelle base postgreSQL !!
bonjour,
j'ai fait une migration de données de MySQL vers Postgres , j'avais un problème au niveau des caractères spéciaux au niveau de la premoere base,est ce qu'il y a une possibilité de resoudre ce probleme au niveau de ma base postgreSQL??
merci d'avance !
Bonjour,
j'ai la requête HQL
FROM JugeBean j GROUP BY j.nomComplet
qui marche parfaitement sur MySQL mais lorsque je l’exécute sur postgres j'ai le message d'erreur suivant
eptionReporter:72 - ERREUR: la colonne « jugebean0_.id » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat
merci d'avance
en fait sur postgres j'ai pas de tables, ils sont crées automatiquement par la couche jpa (Entity) !!
et sur le MySQL les donnees sont pas dupliquéés
Bonjour,
j'essaye de faire une migration de donnees de MySQL vers Postgres et pour cela j'utilise la couche Jpa avec Eclipselink ,la procedure est de lire les donnees à travers la premiere couche qui est celle de MySQL et les mettre à travers l'autre couche qui est en liaison avec Postgres,j'ai fait une classe Converter pour faire la conversion des donnes
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sensoredabmigration.application;
import java.lang.reflect.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
*
*/
public class Converter<S, D> {
public Converter() {
}
/**
* Returns the getter method
* @param attribute
* @return
*/
private String getGetterMethod(final Field attribute) {
final String first = attribute.getName().substring(0, 1).toUpperCase();
final String next = attribute.getName().substring(1, attribute.getName().length()).toLowerCase();
return "get" + first + next;
}
/**
* Returns the getter method
* @param attribute
* @return
*/
private String getSetterMethod(final Field attribute) {
final String first = attribute.getName().substring(0, 1).toUpperCase();
final String next = attribute.getName().substring(1, attribute.getName().length()).toLowerCase();
return "set" + first + next;
}
public List<D> convert(final Class sourceClass, final Class destinationClass, final List<S> listOfSource) {
final List<D> listOfDestinations = new ArrayList<D>();
final Field[] attributesSource = sourceClass.getDeclaredFields();
try {
for (Iterator<S> it = listOfSource.iterator(); it.hasNext(); ) {
final S currentSource = it.next();
final Object currentDestination = destinationClass.newInstance();
for (int i = 0; i < attributesSource.length; i++) {
final Field currentAttribute = attributesSource[ i ];
final String getter = getGetterMethod(currentAttribute);
final String setter = getSetterMethod(currentAttribute);
try {
final Method getterMethod = sourceClass.getMethod(getter, null);
final S resultGetter = (S) getterMethod.invoke(currentSource, null);
Class[] parametres = new Class[1];
parametres[0] = (Class) currentAttribute.getGenericType();
final Method setterMethod = destinationClass.getMethod(setter, parametres);
final D resultSetter = (D) setterMethod.invoke(currentDestination, resultGetter);
} catch (NoSuchMethodException exception) {
continue;
}
}
listOfDestinations.add((D) currentDestination);
}
} catch (IllegalArgumentException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
}
return listOfDestinations;
}
}
dans mes entity j'utilise pas le "GeneratedValue" car j'ai deja les donnes dans l'autre base et je veux garder les meme id
voici un bout de code d'une Entity
@Entity
@Table(name = "type_sensoriel")
@NamedQueries({
@NamedQuery(name = "DestinationTypeSensoriel.findAll", query = "SELECT s FROM DestinationTypeSensoriel s"),
@NamedQuery(name = "DestinationTypeSensoriel.findById", query = "SELECT s FROM DestinationTypeSensoriel s WHERE s.id = :id"),
@NamedQuery(name = "DestinationTypeSensoriel.findByNom", query = "SELECT s FROM DestinationTypeSensoriel s WHERE s.nom = :nom")})
public class DestinationTypeSensoriel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "nom")
private String nom;
public DestinationTypeSensoriel() {
}
et là voici un bout de code pour ma classe main pour une seule table
//TypeSensoriel
final SourceTypeSensorielJpaController controllerSourceTypeSensoriel = new SourceTypeSensorielJpaController();
final DestinationTypeSensorielJpaController controllerDestinationTypeSensoriel = new DestinationTypeSensorielJpaController();
final List<SourceTypeSensoriel> listeSourceTypeSensoriel = controllerSourceTypeSensoriel.lecture();
final Converter<SourceTypeSensoriel, DestinationTypeSensoriel> converterTypeSensoriel = new Converter<SourceTypeSensoriel, DestinationTypeSensoriel>();
final List<DestinationTypeSensoriel> allSourcesTypeSensoriel = converterTypeSensoriel.convert(SourceTypeSensoriel.class, DestinationTypeSensoriel.class, listeSourceTypeSensoriel);
for (DestinationTypeSensoriel c : allSourcesTypeSensoriel) {
controllerDestinationTypeSensoriel.create(c);
}
mon erreur est le suivant
Internal Exception: org.postgresql.util.PSQLException: ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « type_sensoriel_pkey »
Détail : La clé « (id)=(1) » existe déjà.
Error Code: 0
Call: INSERT INTO type_sensoriel (id, nom) VALUES (?, ?)
bind => [1, Profil]
merci d'avance
Pages : 1