Добавление внешнего ключа с использованием hibernate и jpa

#java #spring #hibernate #jpa

#java #spring #гибернация #jpa

Вопрос:

Это мои классы:

 @Entity
@Table(name="assessment")
public class AssesmentProperties {

  @Id
  @Column(name="AssessmentId")
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Long AssessmentId;

  @Column(unique=true,nullable=false)
  private String AssessmentName;

  private String AssessmentLevel;
  private String  Specialization;
  private int time;
  private String keywords;
  private int NoOfSections;

  //getters and setters
}


@Embeddable
public class SettingsPrimary implements Serializable {

  private Long AssessmentId;

  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Long Section;

 //getters and setters
}


@Entity
@Table(name="section")
public class SectionProperties {

  @EmbeddedId
  private SettingsPrimary PrimaryKey;

  private String SectionType;
  private int Weightage;
  private int time;
  private int NoOfQuestions;

  //getters and setters
}
  

В таблице section мне нужно создать assessment_id как FK для assessment таблицы и установить каскад на удаление. Я пытался сделать это разными способами, но безуспешно.

Комментарии:

1. Создать атрибут типа AssesmentProperties ? Вы можете установить каскад в @OneToOne или @ManyToOne аннотации с помощью cascade=

Ответ №1:

Возможно, это могло бы вам помочь.

 @Entity
@Table(name="section")
public class SectionProperties {

  @Id
  private Long PrimaryKey;

  @ManyToOne(cascade = CascadeType.ALL)
  @JoinColumn(name = "assessment_id", referencedColumnName="AssessmentId")
  private AssesmentProperties AssesmentProperties;

  private String SectionType;
  private int Weightage;
  private int time;
  private int NoOfQuestions;

  //getters and setters
}
  

Я изменил идентификатор свойств раздела на Long и сопоставил возможности оценки с реквизитом ManyToOne.
Таким образом, всегда, когда свойства AssessmentProperties, привязанные к разделу, будут удалены, связанные свойства SectionProperties тоже будут удалены.