Il faut générer les tables depuis les entités.
Clique-droit sur le projet, JPA Tools
, Generate Tables from Entities
.
Pour que cela marche, il faut que dans le persistence.xml
la propriété suivante existe :
<property name="javax.persistence.schema-generation.database.action" value="create"/>
Le schéma n'est pas le bon.
Il faut afficher Data Source Explorer
depuis Window
, Show View
, Other…
Et ajouter en déclaration de la classe le nom du schéma
@Entity @Table(schema = "DEFAULT") public class Position {
@SecondaryTables({ @SecondaryTable(name="PERSO_SECU", pkJoinColumns=@PrimaryKeyJoinColumn(referencedColumnName="ID")), @SecondaryTable(name="PERSO_BANQUE", pkJoinColumns=@PrimaryKeyJoinColumn(referencedColumnName="ID")) })
Il manque
import javax.persistence.PrimaryKeyJoinColumn;
Hibernate :
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on XXX references an unknown entity: YYY at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
La classe YYY n'est pas dans le fichier hibernate.cfg.xml
<hibernate-configuration> <session-factory> <mapping class="YYY" /> </session-factory> </hibernate-configuration>
org.hibernate.exception.GenericJDBCException: could not execute statement at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207) Caused by: java.sql.SQLException: Field 'id' doesn't have a default value at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
Le champ id
de la table ne possède pas l'attribut auto-incrémentation.