ON DELETE SET NULL ON UPDATE SET NULL с использованием JPA - PullRequest
1 голос
/ 25 августа 2011

Как мне добавить ВКЛ УДАЛИТЬ УСТАНОВИТЬ НУЛЬ НА ОБНОВЛЕНИЕ УСТАНОВИТЬ НУЛЬ Ограничение при создании таблицы с использованием JPA.Ниже определения сущности

таблица

CREATE TABLE `node` (
  `id` bigint(20) NOT NULL,
  `parentNode_id` bigint(20) default NULL,
  PRIMARY KEY  (`id`),
  KEY `FK1EC1DD0F28AB6BA5` (`parentNode_id`),  
  CONSTRAINT `FK1EC1DD0F28AB6BA5` FOREIGN KEY (`parentNode_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



@Entity
public class Node {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "NodeSequence")
    private long id;

    @ManyToOne(cascade=CascadeType.REMOVE)
    @JoinColumn(name = "parentNode_id", nullable = true)
    protected Node parentNode = null;

}

1 Ответ

0 голосов
/ 25 августа 2011

Это плохая идея использовать генератор схемы JPA для этой цели.Для управления вашей базой данных почти всегда предпочтительнее иметь сценарии DDL, которые кодируются вручную и помещаются под контроль версий.

Кроме того, установка нулевого значения внешнего ключа с помощью ограничений базы данных приведет только к контексту персистентности.имеющие грязные значения, если только провайдер JPA не знает об ограничениях внешнего ключа в базе данных и сознательно обновляет соответствующие значения в контексте постоянства до нуля.

Кроме того, маловероятно, чтоГенераторы схемы JPA поддерживают эту функцию.Например, Hibernate пока не поддерживает это, и есть несколько функция запросов , которые были подняты, и ни один из них не был решен.EclipseLink также не поддерживает эту функцию.

...