Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DELETE语句与引用约束冲突。即使使用了正确的映射_Java_Sql Server_Asp.net Mvc 4 - Fatal编程技术网

Java DELETE语句与引用约束冲突。即使使用了正确的映射

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

我在.net应用程序中有以下代码:

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;}