0

良い時間。

FOLDERSFOLDER_TYPESの 2 つの DB テーブルがあるとします。

CREATE TABLE FOLDERS (  
  ID               VARCHAR2(50 BYTE)   NOT NULL, 
  NAME             VARCHAR2(4000 BYTE) NOT NULL, 
  DESCRIPTION      VARCHAR2(4000 BYTE), 
  FOLDER_TYPE_ID   VARCHAR2(50 BYTE) NOT NULL, 
  PARENT_FOLDER_ID VARCHAR2(50 BYTE) 
)

CREATE TABLE FOLDER_TYPES ( 
  ID          VARCHAR2(50 BYTE) NOT NULL, 
  NAME        VARCHAR2(50 BYTE) NOT NULL, 
  DESCRIPTION VARCHAR2(4000 CHAR)
)

ご覧のとおり、FOLDERSテーブルのFOLDER_TYPE_ID列にはNOT NULL制約があります。

これらのテーブルの Hibernate のエンティティは次のとおりです。

@Entity
@Table(name = "folders")
public class Folder implements Serializable {
   private static final long serialVersionUID = 1856858081142422000L;

   @Id
   @GeneratedValue(generator = "uuid")
   @GenericGenerator(name = "uuid", strategy = "uuid2")
   @Column(name = "[ID]")
   private String id;

   @Column(name = "[NAME]")
   private String name;

   @Column(name = "[DESCRIPTION]")
   private String description;

   @ManyToOne
   @JoinColumn(name = "folder_type_id")
   private FolderType type;

   ...

@Entity
@Table(name = "folder_types")
public class FolderType implements Serializable{
   private static final long serialVersionUID = -7992732910184226857L;

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "[ID]")
    private String id;

    @Column(name = "[NAME]")
    private String name;

    @Column(name = "[DESCRIPTION]")
    private String description;

問題は、Folder オブジェクトを削除すると、DB から実際に削除する前に、Hibernate は参照 (フォルダー タイプ) に null 値を設定しようとしますが、制約があるため、例外がスローされることです。回避策として、制約を削除できますが、それが必要で、テーブル ( FOLDERS ) を変更できない場合はどうすればよいですか?

エンティティをnull参照に更新しないようにHibernateを言う方法はありますか? Folder エンティティで (FolderType タイプ) に設定しようとしましupdatable = falseたが、うまくいきませんでした...@JoinColumn

4

0 に答える 0