У меня есть 2 таблицы, testInput
и testCases
, а в testInput
у меня есть FK с идентификатором другой таблицы.
Таким образом, в основном строки, которые я хочу удалить, являются идентификатором ввода, идентификатором testCase, именем и описанием.
'43', '21', 'USERNAME', 'USERNAME'
'44', '21', 'PASSWORD', 'PASSWORD'
Я попытался удалить эту строку, и я получил
java.sql.SQLIntegrityConstraintViolationException: невозможно удалить или
обновить родительскую строку: ограничение внешнего ключа не выполнено
(mydb
. testInput
, ОГРАНИЧЕНИЕ fk02
ИНОСТРАННЫЙ КЛЮЧ (testCase
)
ССЫЛКИ testCases
(idtestCase
) НА УДАЛИТЬ НЕТ ДЕЙСТВИЯ НА ОБНОВЛЕНИЕ НЕТ
ДЕЙСТВИЯ)
Я не хочу удалять запись testCase. Я просто хочу удалить входные данные этого testCase. Что мне делать?
код, если хочешь ...
List<TestInput> previousInputs = TestInput.getInputs(testCaseName);
for(TestInput in : previousInputs) {
Database.deleteObject(in);
}
//delete the object to the database
public static void deleteObject(Object object) {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
session.delete(object);
tx.commit();
}catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}finally {
session.close();
}
}
xml TestCases
<hibernate-mapping>
<class name="TestCase" table="testCases">
<meta attribute="class-description">
This class contains the testCases details.
</meta>
<id name="id" type="int" column="idtestCase">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
<many-to-one name="type" class="TestType" column="type" fetch="select" lazy="false"/>
<property name="data" column="data" type="binary"/>
<property name="amountOfInputs" column="amountOfInputs" type="int"/>
<property name="creationDate" column="creationDate" type="string"/>
<property name="createdBy" column="createdBy" type="string"/>
<many-to-one name="tellerConfig" class="TellerConfiguration" column="tellerConfig" fetch="select" lazy="false"/>
</class>
</hibernate-mapping>
xml testInput
<hibernate-mapping>
<class name="TestInput" table="testInput">
<meta attribute="class-description">
This class contains the testCases input details.
</meta>
<id name="id" type="int" column="idtestInput">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
<property name="description" column="description" type="string"/>
<many-to-one name="testCase" class="TestCase" column="testCase" fetch="select" cascade="all" lazy="false" />
</class>