Hibernate OnDelete Cascade funktioniert nicht mit MySQL, funktioniert aber mit postgres und Ms-Sql

Ich habe 2 Entitäten.Fade entity undPos entity mit OnetoOne-Zuordnung von Post-> Thread.

A Fade entity enthält Numerous Posts. Ich weiß, ich hätte OnetoMany anstelle von OnetoOne verwenden sollen, aber um alle Probleme mit Sammlungen zu vermeiden, verwende ich OnetoOne

Nun ist das Problem, wenn ich ein @ löschFade, all diePosas damit verbundene @ muss ebenfalls entfernt werden. Ich mache das erfolgreich mit

@OnDelete(action = OnDeleteAction.CASCADE)

Aber es funktioniert nur auf Postgres und Ms-SQl, aber nicht auf MySql (auch InnoDb ausprobiert). Dason Kaskade löschen wird in der Schema-Generierungsabfrage nicht generiert.

Folgen sind die Code

//Thread Entity
@Id
@GeneratedValue
@Column(name = "thread_id")
private int ThreadID;
//Post Entity
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "post_id")
private int PostID;

@OneToOne()
@OnDelete(action = OnDeleteAction.CASCADE)
private thread ThreadID;

Ich erhalte den folgenden Fehler beim Löschen eines Elements ausFade entity mit der folgenden Abfrage

session.delete(session.load(thread.class,1));

02.09.2014 20:33:51 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARNUNG: SQL-Fehler: 1451, SQLState: 23000 02.09.2014 20:33:51 org.hibernate.engine.jdbc .spi.SqlExceptionHelper logExceptions FEHLER: Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl forum.post_tbl, CONSTRAINTFK_bfbv5nknqj7ppd5630scimhtb UNBEKANNTER SCHLÜSSEL ThreadID_thread_id) VERWEISEthread_tbl (thread_id)) org.hibernate.exception.ConstraintViolationException: Anweisung konnte bei org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert (SQLExceptionTypeDelegate.java:74) nicht ausgeführt werden : 49) bei org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:125) bei org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:110). engine.jdbc.internal.ResultSetReturnImpl.executeUpdate (ResultSetReturnImpl.java:136) at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch (NonBatchingBatch.java:58) at org.hibernate delete (AbstractEntityPersister.java:3343) at org.hibernate.persister.entity.AbstractEntityPersister.delete (AbstractEntityPersister.java:3546) at org.hibernate.action.internal.EntityDeleteAction.execute (EntityDeleteAction.java:100) .engine.spi.Act ionQueue.execute (ActionQueue.java:377) at org.hibernate.engine.spi.ActionQueue.executeActions (ActionQueue.java:369) at org.hibernate.engine.spi.ActionQueue.executeActions (ActionQueue.java:293) at org .hibernate.event.internal.AbstractFlushingEventListener.performExecutions (AbstractFlushingEventListener.java:339) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush (DefaultFlushEventListener.java:52 Session.Imflushing) at org : 1234) um org.hibernate.internal.SessionImpl.managedFlush (SessionImpl.java:404) um org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit (JdbcTransaction.java:101) um org.hibernate.java:101. transaction.spi.AbstractTransactionImpl.commit (AbstractTransactionImpl.java:175) at test.main (test.java:84) Auslöser: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden Schlüsselbedingung schlägt fehl forum.post_tbl, CONSTRAINTFK_bfbv5nknqj7ppd5630scimhtb UNBEKANNTER SCHLÜSSEL ThreadID_thread_id) VERWEISEthread_tbl (thread_id)) HibernateException: Anweisung konnte bei sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native-Methode) bei sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) bei sun.reflect.Instance.new ) unter java.lang.reflect.Constructor.newInstance (Constructor.java:408) unter com.mysql.jdbc.Util.handleNewInstance (Util.java:411) unter com.mysql.jdbc.Util.getInstance (Util.java: 386) um com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1040) um com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:4120) um com.mysql.jdbc.MysqlIO.java.java:1040 : 4052) um com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:2503) um com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2664) um com.mysql.jdbc.ConnectionImpl.exec. java: 2794) at com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:2155) at com.mysql.jdbc.PreparedStatement.executeUpd aßen (PreparedStatement.java:2458) um com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2375) um com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2359d.) um orgaredStat .internal.ResultSetReturnImpl.executeUpdate (ResultSetReturnImpl.java:133) ... 14 weitere BUILD ERFOLGREICH (Gesamtzeit: 2 Sekunden)

Bitte helfen Sie mir, einen Ausweg zu finden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage