JPA tableau “sequence” n'existe pas
Base de données:
user_account
id(pk)
email
password
...
user_detail
id(pk fk)
name_first
name_last
...
Entité
@Entity
@Table(name="user_account")
@SecondaryTable(name="user_detail", pkJoinColumns=@PrimaryKeyJoinColumn())
public class UserAccount implements Serializable{
private static final long serialVersionUID = -2606506548742732094L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String email;
private String password;
private String tab;
private String shortcut;
private String setting;
private Integer role;
@Column(table="user_detail", name="name_first")
private String nameFirst;
@Column(table="user_detail", name="name_last")
private String nameLast;
@Column(table="user_detail")
private String occupation;
@Column(table="user_detail")
@Temporal(TemporalType.DATE)
private Date birth;
....
}
Action
try{
EntityTransaction transaction = em.getTransaction();
transaction.begin();
em.persist(currentUser);
transaction.commit();
} catch (Exception e){
}
Erreur
INFO: [EL Avertissement]: 2012-01-06
18:45:46.77--ClientSession(17472935)--Exception [EclipseLink-4002]
(Eclipse Services De Persistance - 2.3.0.v20110604-r9504):
org.eclipse.la persistance.des exceptions.DatabaseException Interne
Exception: com.mysql.jdbc.des exceptions.MySQLSyntaxErrorException: Tableau
'mazedb.la séquence' n'existe pas de Code d'Erreur: 1146 Appel: SÉQUENCE de mise à JOUR
ENSEMBLE SEQ_COUNT = SEQ_COUNT + ? OÙ SEQ_NAME = ? bind => [2
paramètres liés] Requête: DataModifyQuery(name="SEQUENCE" sql="UPDATE
ENSEMBLE DE SÉQUENCES DE SEQ_COUNT = SEQ_COUNT + ? OÙ SEQ_NAME = ?")INFO: ERREUR: Internal Exception:
com.mysql.jdbc.des exceptions.MySQLSyntaxErrorException: Tableau
'mazedb.la séquence' n'existe pas de Code d'Erreur: 1146 Appel: SÉQUENCE de mise à JOUR
ENSEMBLE SEQ_COUNT = SEQ_COUNT + ? OÙ SEQ_NAME = ? bind => [2
paramètres liés] Requête: DataModifyQuery(name="SEQUENCE" sql="UPDATE
ENSEMBLE DE SÉQUENCES DE SEQ_COUNT = SEQ_COUNT + ? OÙ SEQ_NAME = ?")
J'ai essayé dans l'autre sens, les deux entités fusionnées par @PrimaryKeyJoinColumn, mais j'ai eu le même message d'erreur.
Mais pourquoi aurais-je besoin de ce tableau si on n'est pas censé être là?
OriginalL'auteur TGM | 2012-01-06
Vous devez vous connecter pour publier un commentaire.
Si EclipseLink tente d'accéder à cette table, cela signifie qu'il est censé être là.
GenerationType.AUTO
signifie que EclipseLink choisit le plus approprié génération type de votre base de données (MySQL). Dans ce cas, le choix est d'utiliser un tableau-générateur, qui a besoin d'un tableau. Voir http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/GeneratedValue.Si vous ne souhaitez pas utiliser cette stratégie, choisir un autre.
OriginalL'auteur JB Nizet
Je n'avais jamais eu cette erreur avant en dépit de faire ce genre de chose une centaine de fois. J'ai trouvé cette erreur était parce que j'avais une propriété hibernate pour la création des tables dans la
persistence.xml
mais a l'aide d'EclipseLink:C'était:
J'ai changé à la suite de la correction de l'erreur:
OriginalL'auteur HankCa
Dans le fichier de configuration,
org.hibernate.dialect.oracle10gdialect
ligne peut être oublié. En effet,org.hibernate.dialect.mysqldialect
devrait être.OriginalL'auteur user2169837