Java DELETE语句与引用约束冲突。即使使用了正确的映射
我在.net应用程序中有以下代码:Java DELETE语句与引用约束冲突。即使使用了正确的映射,java,sql-server,asp.net-mvc-4,Java,Sql Server,Asp.net Mvc 4,我在.net应用程序中有以下代码: public GradeMapper() { ToTable("Grades"); // Primary key HasKey(c => c.GradeId); // Properties //Relations HasOptional(g => g.DeterminateTableP
public GradeMapper()
{
ToTable("Grades");
// Primary key
HasKey(c => c.GradeId);
// Properties
//Relations
HasOptional(g => g.DeterminateTableProp).WithMany().Map(m => m.MapKey("DeterminateTableId")).WillCascadeOnDelete(false);
}
在我的数据库中,我有:
我正在使用JavaFX应用程序对数据库进行调整。
我想删除一个可确定的表,但不想删除它所属的等级
这是我用来删除它的代码:
public void deleteDeterminateTableById(int id){
em.getTransaction().begin();
em.remove(findDeterminateTableById(id));
em.getTransaction().commit();
}
但现在我得到了这个错误:
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.0.v20141202-3914740): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.Grades_dbo.DeterminateTable_DeterminateTableId". The conflict occurred in database "HOGENT1415_11", table "dbo.Grades", column 'DeterminateTableId'.
Error Code: 547
Call: DELETE FROM DeterminateTable WHERE (DETERMINATETABLEID = ?)
bind => [1 parameter bound]
Query: DeleteObjectQuery(domain.DeterminateTable@ee66dbe)
那么,我的映射有什么问题?删除确定表时,我希望将成绩表中的外键设置为null。如果表中有外键,则可以将其设置为级联删除和更新,这将解决删除有子项的父项时的问题 这是否也会删除等级?但我想保留等级对象,而不是删除它,然后更新并将foeign键设置为null而不是delete。我找不到如何在fluent apipublic void deleteDeterminateTableByidit id中执行此操作{em.getTransaction.begin;YourObject xyz=finddeterminateTableById;xyz.set…null;em.mergexyz;em.getTransaction.commit;}