J'ai les classes d'entités JPA suivantes (exemple de cas). Une maison appartient à une seule rue. Une rue a beaucoup de maisons. J'ai le type de génération défini sur identity, qui est supposé affecter automatiquement un nouvel ID. Lorsque vous créez une nouvelle maison avec une nouvelle rue, je dois d'abord créer et persister Street, puis House. C'est parce que je n'ai pas défini CascadeType sur PERSIST, donc cela doit être fait manuellement [1]. Cependant, lors de l'insertion d'une rue nouvellement créée:Hibernate génère une requête SQL non valide avec MySQL
Street street = new Street();
entityManager.persist(street);
Hibernate/JPA génère la requête SQL suivante:
insert into Street default values
qui MySQL n'aime pas.
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'default values' at line 1
Des idées pourquoi? J'utilise Java 6, MySQL 5.0.67 avec l'implémentation de JPA de Hibernate (version 3.2.1.ga).
[1] EJB 3 dans les pages d'action 318-319
Merci, vous avez sauvé mes heures de dur labeur. – Heisenberg
J'utilisais 'key' et 'value' comme noms de colonnes. Woops. –