விளக்கம்

ஒரு தரவுத்தளத்தில் ஒரு வகுப்பு படிநிலையை சேமிப்பதற்கான மற்றொரு உத்தி இணைந்த அட்டவணை என்று அழைக்கப்படுகிறது. இதற்கு ஒரு சிறப்பு குறிப்பு உள்ளது:

@Inheritance(strategy = InheritanceType.JOINED)

எங்கள் வகுப்புகளின் எடுத்துக்காட்டு:

@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
  int id;
  String name;
  LocalDate birthday;
}
@Entity
class Employee extends User {
 	String occupation;
 	int salary;
 	LocalDate join;
}
@Entity
class Client extends User {
   String address;
}

இந்த சிறுகுறிப்பைப் பயன்படுத்தும் போது, ​​ஒவ்வொரு வகுப்புக்கும் அதன் துணைப்பிரிவுகளுக்கும் தரவுத்தளத்தில் ஒரு தனி அட்டவணையை Hibernate எதிர்பார்க்கும். அவற்றிலிருந்து தரவைத் தேர்ந்தெடுக்கும்போது, ​​நீங்கள் SQL JOIN ஆபரேட்டரைப் பயன்படுத்த வேண்டும்.

தரவுத்தள திட்ட உதாரணம்:

CREATE TABLE user {
  id INT,
  name VARCHAR,
  birthday DATE
}
CREATE TABLE employee {
  id INT,
  occupation VARCHAR,
  salary INT,
  join DATE
}
CREATE TABLE client {
  id INT,
  address VARCHAR
}

டேபிளிலிருந்து சில கிளையண்டின் தரவைப் பெற நீங்கள் முடிவு செய்தால், அட்டவணையில் சேர ஹைபர்னேட் JOIN ஐப் பயன்படுத்த வேண்டும்:

SELECT u.id, u.name, u.birthday, c.address FROM user u JOIN client c ON u.id = c.id;

@PrimaryKeyJoinColumn

குழந்தை நிறுவன வகுப்புகள் அட்டவணையில் ஒரு நெடுவரிசையைக் கொண்டுள்ளன, இது பெற்றோர் நிறுவன வகுப்பின் பொருள் ஐடியைக் குறிக்கிறது. இந்த நெடுவரிசையின் பெயர் இயல்பாக பெற்றோர் வகுப்பின் நெடுவரிசையின் பெயருக்கு சமமாக இருக்கும்.

உதாரணமாக:

@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
  @Id
  int user_identifier;
  String name;
  LocalDate birthday;
}
@Entity
class Employee extends User {
 	String occupation;
 	int salary;
 	LocalDate join;
}
@Entity
class Client extends User {
   String address;
}

பின்னர் தரவுத்தள அட்டவணை இப்படி இருக்கும்:

CREATE TABLE user {
  user_identifier INT,
  name VARCHAR,
  birthday DATE
}
CREATE TABLE employee {
  user_identifier INT,
  occupation VARCHAR,
  salary INT,
  join DATE
}
CREATE TABLE client {
  user_identifier INT,
  address VARCHAR
}

சார்பு அட்டவணையில் நெடுவரிசைப் பெயரை மேலெழுத விரும்பினால், @PrimaryKeyJoinColumn சிறுகுறிப்பைப் பயன்படுத்த வேண்டும் . உதாரணமாக:

@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
  @Id
  int user_identifier;
  String name;
  LocalDate birthday;
}
@Entity
@PrimaryKeyJoinColumn(name=”user_id”)
class Employee extends User {
 	String occupation;
 	int salary;
 	LocalDate join;
}
@Entity
@PrimaryKeyJoinColumn(name=”user_id2”)
class Client extends User {
   String address;
}

பின்னர் தரவுத்தள அட்டவணை இப்படி இருக்கும்:

CREATE TABLE user {
  user_identifier INT,
  name VARCHAR,
  birthday DATE
}
CREATE TABLE employee {
  user_id INT,
  occupation VARCHAR,
  salary INT,
  join DATE
}
CREATE TABLE client {
  user_id2 INT,
  address VARCHAR
}