Не можем ли мы удалить запись с автоматически сгенерированным полем идентификатора последовательности?

Я работаю на офбизнесе. Я просто пытаюсь удалить запись из таблицы, в которой есть поле с автоматически сгенерированным идентификатором последовательности. Пытаюсь удалить запись простым способом, используя тег. Но он показывает ошибку ниже:

 [java] 2014-03-13 11:23:22,584 (http-bio-0.0.0.0-8080-exec-9) [                Log.java:83 :INFO ] 
 [java] 2014-03-13 11:23:22,599 (http-bio-0.0.0.0-8080-exec-9) [      GenericEntity.java:147:ERROR] 
 [java] ---- runtime exception report --------------------------------------------------
 [java] Exception: java.lang.IllegalStateException
 [java] Message: **This object has been flagged as immutable (unchangeable), probably because it came from an Entity Engine cache. Cannot modify an immutable entity object.**
 [java] ---- stack trace ---------------------------------------------------------------
 [java] java.lang.IllegalStateException: This object has been flagged as immutable (unchangeable), probably because it came from an Entity Engine cache. Cannot modify an immutable entity object.
 [java] org.ofbiz.entity.GenericEntity.assertIsMutable(GenericEntity.java:147)
 [java] org.ofbiz.entity.GenericEntity.removedFromDatasource(GenericEntity.java:276)
 [java] org.ofbiz.entity.GenericDelegator.removeValue(GenericDelegator.java:1081)
 [java] org.ofbiz.minilang.method.entityops.RemoveValue.exec(RemoveValue.java:66)
 [java] org.ofbiz.minilang.SimpleMethod.runSubOps(SimpleMethod.java:311)
 [java] org.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:458)
 xxxxxxxxx xxxxx .................

Можем ли мы удалить этот тип записей (с автоматически сгенерированным идентификатором последовательности) из таблицы БД?


person venky    schedule 13.03.2014    source источник


Ответы (2)


Вы должны сначала клонировать неизменяемые экземпляры из кеша, чтобы изменить их. Вот тред с небольшим пояснением.

person Ejaz Ahmed    schedule 14.04.2014

Я сам нашел решение. На самом деле, когда я извлекаю запись, я использовал тег «entity-one», в котором use-cache по умолчанию имеет значение «true». Поэтому я изменил значение use-cache на false. Итак, я могу удалить запись. Ниже приведены фрагменты, которые я использовал при извлечении записи:

 <entity-one value-field="xxx" entity-name="Yyyyy">...</entity-one>
 <remove-value value-field="xxx"/>

Теперь я указал для атрибута use-cache значение false, как показано ниже:

 <entity-one value-field="xxx" entity-name="Yyyyy" **use-cache="false"**>...</entity-one>
 <remove-value value-field="xxx"/>

Это работает нормально. Спасибо.

person venky    schedule 13.03.2014