Как обработать в пакетном режиме, удаляют использование bulkUpdate

Если вы используете Sails v1

// config/security.js
module.exports.security = {
    csrf: true,
};

// config/routes.js
'GET /csrfToken': 'SomeController.grantCsrfToken', 

// api/controllers/SomeController.js
module.exports = {
 grantCsrfToken: function (req, res /*, next */) {
    // Don't grant CSRF tokens over sockets.
    if (req.isSocket) {
      if (process.env.NODE_ENV === 'production') {
        return res.notFound();
      }
      return res.badRequest(new Error('Cannot access CSRF token via socket request.  Instead, send an HTTP request (i.e. XHR) to this endpoint.'));
    }
    // Send the CSRF token wrapped in an object.
    return res.json({
      _csrf: res.locals._csrf
    });
  },
}

// assets/js/some_filename.js
function send_some_post_request(extra_params) {
  $.get("/csrfToken", function (data, jwres) {
    if (jwres != 'success') { return false; }
    msg = {
      extra_params: extra_params,
      _csrf: data._csrf
    };
    $.post("doStuff", msg, function(data, status){
    });
  });
}
7
задан Pascal Thivent 6 August 2010 в 20:46
поделиться

3 ответа

Операции массового удаления не выполняются каскадом для связанных объектов в соответствии со спецификацией JPA:

4.10 Операции массового обновления и удаления

Операции массового обновления и удаления применяются к юридическим лицам одного юридического лица класс (вместе с его подклассами, если есть). Только одна аннотация сущности тип схемы может быть указан в Предложение FROM или UPDATE.

...

Операция удаления применяется только к сущности указанного класса и его подклассы. Не каскадно связанным организациям .

Однако я бы ожидал, что провайдер JPA будет иметь дело с таблицами соединения. К сожалению, Hibernate этого не делает, и это зарегистрировано в HHH-1917 . Боюсь, вам придется прибегнуть к использованию собственного SQL, чтобы самостоятельно очистить таблицу соединений или использовать в схеме каскадные внешние ключи.

8
ответ дан 7 December 2019 в 01:26
поделиться

Каскадирование на уровне приложений (каскадирование через аннотации в спящем режиме или аннотации JPA) работает только в том случае, если фактическая сущность на самом деле загружается из БД. Когда вы используете шаблон hibernate с HQL, вы заметите, что сущности не загружены, и HQL напрямую преобразуется в SQL для выполнения.

Если вы хотите пакетное удаление, вы должны использовать HQL-запрос для удаления. все соответствующие таблицы (т.е. роли) перед удалением данных родительской таблицы.

2
ответ дан 7 December 2019 в 01:26
поделиться

I'm not entirely sure because it's hard for me to recreate this problem, but I think you might need to add a cascade to your @ManyToMany

@ManyToMany(cascade = CascadeType.ALL)
0
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: