JPA - Bản đồ nâng cao

JPA là một thư viện được phát hành với đặc tả java. Do đó, nó hỗ trợ tất cả các khái niệm hướng đối tượng cho tính bền vững của thực thể. Cho đến bây giờ chúng ta đã hoàn thành những kiến ​​thức cơ bản về ánh xạ quan hệ đối tượng. Chương này sẽ đưa bạn qua các ánh xạ nâng cao giữa các đối tượng và thực thể quan hệ.

Chiến lược kế thừa

Kế thừa là khái niệm cốt lõi của ngôn ngữ hướng đối tượng, do đó chúng ta có thể sử dụng các mối quan hệ hoặc chiến lược kế thừa giữa các thực thể. JPA hỗ trợ ba loại chiến lược kế thừa như SINGLE_TABLE, JOINED_TABLE và TABLE_PER_CONCRETE_CLASS.

Chúng ta hãy xem xét một ví dụ về các lớp Staff, TeachingStaff, NonTeachingStaff và các mối quan hệ của chúng như sau:

Trong sơ đồ minh họa ở trên, Nhân viên là một thực thể và TeachingStaff và NonTeachingStaff là các thực thể con của Nhân viên. Ở đây chúng ta sẽ thảo luận về ví dụ trên trong cả ba chiến lược kế thừa.

Chiến lược bảng đơn

Chiến lược Bảng đơn lấy tất cả các trường lớp (cả lớp siêu và lớp con) và ánh xạ chúng thành một bảng duy nhất được gọi là chiến lược SINGLE_TABLE. Ở đây giá trị phân biệt đóng vai trò quan trọng trong việc phân biệt giá trị của ba thực thể trong một bảng.

Chúng ta hãy xem xét ví dụ trên, TeachingStaff và NonTeachingStaff là các lớp con của lớp Nhân viên. Nhắc lại khái niệm kế thừa (là cơ chế kế thừa các thuộc tính của siêu lớp theo lớp con) và do đó sid, sname là các trường thuộc về cả TeachingStaff và NonTeachingStaff. Tạo một dự án JPA. Tất cả các mô-đun của dự án này như sau:

Tạo thực thể

Tạo một gói có tên ‘com.tutorialspoint.eclipselink.entity’ Dưới ‘src’gói hàng. Tạo một lớp java mới có tênStaff.javatheo gói nhất định. Lớp thực thể Nhân viên được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import java.io.Serializable;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

@Entity
@Table
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
@DiscriminatorColumn( name = "type" )

public class Staff implements Serializable {
   @Id
   @GeneratedValue( strategy = GenerationType.AUTO )
   
   private int sid;
   private String sname;
   
   public Staff( int sid, String sname ) {
      super( );
      this.sid = sid;
      this.sname = sname;
   }
   
   public Staff( ) {
      super( );
   }
   
   public int getSid( ) {
      return sid;
   }
   
   public void setSid( int sid ) {
      this.sid = sid;
   }
   
   public String getSname( ) {
      return sname;
   }
   
   public void setSname( String sname ) {
      this.sname = sname;
   }
}

Trong đoạn mã trên @DescriminatorColumn chỉ định tên trường (type) và các giá trị của nó hiển thị các trường (Teaching and NonTeachingStaff) còn lại.

Tạo một lớp con (lớp) cho lớp Nhân viên có tên TeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể TeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue( value="TS" )
public class TeachingStaff extends Staff {

   private String qualification;
   private String subjectexpertise;

   public TeachingStaff( int sid, String sname, 
   
   String qualification,String subjectexpertise ) {
      super( sid, sname );
      this.qualification = qualification;
      this.subjectexpertise = subjectexpertise;
   }

   public TeachingStaff( ) {
      super( );
   }

   public String getQualification( ){
      return qualification;
   }

   public void setQualification( String qualification ){
      this.qualification = qualification;
   }

   public String getSubjectexpertise( ) {
      return subjectexpertise;
   }

   public void setSubjectexpertise( String subjectexpertise ){
      this.subjectexpertise = subjectexpertise;
   }
}

Tạo một lớp con (lớp) cho lớp Nhân viên có tên NonTeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể NonTeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue( value = "NS" )

public class NonTeachingStaff extends Staff {
   private String areaexpertise;

   public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
      super( sid, sname );
      this.areaexpertise = areaexpertise;
   }

   public NonTeachingStaff( ) {
      super( );
   }

   public String getAreaexpertise( ) {
      return areaexpertise;
   }

   public void setAreaexpertise( String areaexpertise ){
      this.areaexpertise = areaexpertise;
   }
}

Persistence.xml

Tệp Persistence.xml chứa thông tin cấu hình của cơ sở dữ liệu và thông tin đăng ký của các lớp thực thể. Tệp xml được hiển thị như sau:

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

   <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">
   
      <class>com.tutorialspoint.eclipselink.entity.Staff</class>
      <class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
      <class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
      
      <properties>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
         <property name="javax.persistence.jdbc.user" value="root"/>
         <property name="javax.persistence.jdbc.password" value="root"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="eclipselink.logging.level" value="FINE"/>
         <property name="eclipselink.ddl-generation" value="create-tables"/>
      </properties>
      
   </persistence-unit>
</persistence>

Hạng dịch vụ

Các lớp dịch vụ là phần thực hiện của thành phần nghiệp vụ. Tạo một gói dưới‘src’ gói có tên ‘com.tutorialspoint.eclipselink.service’.

Tạo một lớp có tên SaveClient.java trong gói đã cho để lưu trữ các trường lớp Staff, TeachingStaff và NonTeachingStaff. Lớp SaveClient được hiển thị như sau:

package com.tutorialspoint.eclipselink.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;

public class SaveClient {

   public static void main( String[ ] args ) {
   
      EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
      EntityManager entitymanager = emfactory.createEntityManager( );
      entitymanager.getTransaction( ).begin( );

      //Teaching staff entity 
      TeachingStaff ts1=new TeachingStaff(1,"Gopal","MSc MEd","Maths");
      TeachingStaff ts2=new TeachingStaff(2, "Manisha", "BSc BEd", "English");
      
      //Non-Teaching Staff entity
      NonTeachingStaff nts1=new NonTeachingStaff(3, "Satish", "Accounts");
      NonTeachingStaff nts2=new NonTeachingStaff(4, "Krishna", "Office Admin");

      //storing all entities
      entitymanager.persist(ts1);
      entitymanager.persist(ts2);
      entitymanager.persist(nts1);
      entitymanager.persist(nts2);
      
      entitymanager.getTransaction().commit();
      
      entitymanager.close();
      emfactory.close();
   }
}

Sau khi biên dịch và thực thi chương trình trên, bạn sẽ nhận được thông báo trong bảng điều khiển của Eclipse IDE. Kiểm tra bàn làm việc MySQL để biết đầu ra. Đầu ra ở định dạng bảng được hiển thị như sau:

Sid Kiểu Tên của Areaexpertise Trình độ chuyên môn Chủ đề
1 TS Gopal MSC MED Toán học
2 TS Manisha GIƯỜNG BSC Tiếng Anh
3 NS Hài lòng Tài khoản
4 NS Krishna Quản trị viên văn phòng

Cuối cùng, bạn sẽ nhận được một bảng chứa tất cả ba trường của lớp và khác với cột phân biệt có tên ‘Type’ (cánh đồng).

Chiến lược bảng đã tham gia

Chiến lược bảng được tham gia là chia sẻ cột được tham chiếu chứa các giá trị duy nhất để tham gia bảng và thực hiện các giao dịch dễ dàng. Chúng ta hãy xem xét ví dụ tương tự như trên.

Tạo một Dự án JPA. Tất cả các mô-đun dự án được hiển thị như sau:

Tạo thực thể

Tạo một gói có tên ‘com.tutorialspoint.eclipselink.entity’ Dưới ‘src’gói hàng. Tạo một lớp java mới có tênStaff.javatheo gói nhất định. Lớp thực thể Nhân viên được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

@Entity
@Table
@Inheritance( strategy = InheritanceType.JOINED )

public class Staff implements Serializable {

   @Id
   @GeneratedValue( strategy = GenerationType.AUTO )
   
   private int sid;
   private String sname;
   
   public Staff( int sid, String sname ) {
      super( );
      this.sid = sid;
      this.sname = sname;
   }
   
   public Staff( ) {
      super( );
   }
   
   public int getSid( ) {
      return sid;
   }
   
   public void setSid( int sid ) {
      this.sid = sid;
   }
   
   public String getSname( ) {
      return sname;
   }
   
   public void setSname( String sname ) {
      this.sname = sname;
   }
}

Tạo một lớp con (lớp) cho lớp Nhân viên có tên TeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể TeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")

public class TeachingStaff extends Staff {
   private String qualification;
   private String subjectexpertise;

   public TeachingStaff( int sid, String sname, 
   
   String qualification,String subjectexpertise ) {
      super( sid, sname );
      this.qualification = qualification;
      this.subjectexpertise = subjectexpertise;
   }

   public TeachingStaff( ) {
      super( );
   }

   public String getQualification( ){
      return qualification;
   }

   public void setQualification( String qualification ){
      this.qualification = qualification;
   }

   public String getSubjectexpertise( ) {
      return subjectexpertise;
   }

   public void setSubjectexpertise( String subjectexpertise ){
      this.subjectexpertise = subjectexpertise;
   }
}

Tạo một lớp con (lớp) cho lớp Nhân viên có tên NonTeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể NonTeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")

public class NonTeachingStaff extends Staff {
   private String areaexpertise;

   public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
      super( sid, sname );
      this.areaexpertise = areaexpertise;
   }

   public NonTeachingStaff( ) {
      super( );
   }

   public String getAreaexpertise( ) {
      return areaexpertise;
   }

   public void setAreaexpertise( String areaexpertise ) {
      this.areaexpertise = areaexpertise;
   }
}

Persistence.xml

Tệp Persistence.xml chứa thông tin cấu hình của cơ sở dữ liệu và thông tin đăng ký của các lớp thực thể. Tệp xml được hiển thị như sau:

<?xml version = "1.0" encoding = "UTF-8"?>

<persistence version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   
   <persistence-unit name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
      <class>com.tutorialspoint.eclipselink.entity.Staff</class>
      <class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
      <class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
      
      <properties>
         <property name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/>
         <property name = "javax.persistence.jdbc.user" value = "root"/>
         <property name = "javax.persistence.jdbc.password" value = "root"/>
         <property name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver"/>
         <property name = "eclipselink.logging.level" value = "FINE"/>
         <property name = "eclipselink.ddl-generation" value = "create-tables"/>
      </properties>
      
   </persistence-unit>
</persistence>

Hạng dịch vụ

Các lớp dịch vụ là phần thực hiện của thành phần nghiệp vụ. Tạo một gói dưới‘src’ gói có tên ‘com.tutorialspoint.eclipselink.service’.

Tạo một lớp có tên SaveClient.java trong gói đã cho để lưu trữ các trường lớp Staff, TeachingStaff và NonTeachingStaff. Sau đó, lớp SaveClient như sau:

package com.tutorialspoint.eclipselink.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;

public class SaveClient {
   public static void main( String[ ] args ) {
      EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
      EntityManager entitymanager = emfactory.createEntityManager( );
      entitymanager.getTransaction( ).begin( );

      //Teaching staff entity 
      TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
      TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
      
      //Non-Teaching Staff entity
      NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
      NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");

      //storing all entities
      entitymanager.persist(ts1);
      entitymanager.persist(ts2);
      entitymanager.persist(nts1);
      entitymanager.persist(nts2);

      entitymanager.getTransaction().commit();
      entitymanager.close();
      emfactory.close();
   }
}

Sau khi biên dịch và thực thi chương trình trên, bạn sẽ nhận được thông báo trong bảng điều khiển của Eclipse IDE. Để kiểm tra đầu ra MySQL workbench như sau:

Tại đây, ba bảng được tạo và kết quả của staff bảng ở định dạng bảng được hiển thị như sau:

Sid Loại Tên của
1 Nhân viên giảng dạy Gopal
2 Nhân viên giảng dạy Manisha
3 NonTeachingStaff Hài lòng
4 NonTeachingStaff Krishna

Kết quả của TeachingStaff bảng ở định dạng bảng được hiển thị như sau:

Sid Trình độ chuyên môn Chủ đề
1 MSC MED Toán học
2 GIƯỜNG BSC Tiếng Anh

Trong bảng bên trên sid là khóa ngoại (bảng nhân viên biểu mẫu trường tham chiếu) Kết quả của NonTeachingStaff bảng ở định dạng bảng được hiển thị như sau:

Sid Areaexpertise
3 Tài khoản
4 Quản trị viên văn phòng

Cuối cùng, ba bảng được tạo bằng cách sử dụng các trường của chúng tương ứng và trường SID được chia sẻ bởi cả ba bảng. Trong bảng nhân viên, SID là khóa chính, trong các bảng còn lại (TeachingStaff và NonTeachingStaff), SID là khóa ngoại.

Chiến lược bảng mỗi lớp

Chiến lược bảng mỗi lớp là tạo một bảng cho mỗi thực thể con. Bảng nhân viên sẽ được tạo nhưng nó sẽ chứa các bản ghi rỗng. Các giá trị trường của bảng Nhân viên phải được chia sẻ bởi các bảng TeachingStaff và NonTeachingStaff.

Chúng ta hãy xem xét ví dụ tương tự như trên. Tất cả các mô-đun của dự án này được hiển thị như sau:

Tạo thực thể

Tạo một gói có tên ‘com.tutorialspoint.eclipselink.entity’ Dưới ‘src’gói hàng. Tạo một lớp java mới có tênStaff.javatheo gói nhất định. Lớp thực thể Nhân viên được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

@Entity
@Table
@Inheritance( strategy = InheritanceType.TABLE_PER_CLASS )

public class Staff implements Serializable {

   @Id
   @GeneratedValue( strategy = GenerationType.AUTO )

   private int sid;
   private String sname;

   public Staff( int sid, String sname ) {
      super( );
      this.sid = sid;
      this.sname = sname;
   }

   public Staff( ) {
      super( );
   }

   public int getSid( ) {
      return sid;
   }

   public void setSid( int sid ) {
      this.sid = sid;
   }

   public String getSname( ) {
      return sname;
   }

   public void setSname( String sname ) {
      this.sname = sname;
   }
}

Tạo một lớp con (lớp) cho lớp Nhân viên có tên TeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể TeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
public class TeachingStaff extends Staff {
   private String qualification;
   private String subjectexpertise;

   public TeachingStaff( int sid, String sname, String qualification, String subjectexpertise ) {
      super( sid, sname );
      this.qualification = qualification;
      this.subjectexpertise = subjectexpertise;
   }

   public TeachingStaff( ) {
      super( );
   }

   public String getQualification( ){
      return qualification;
   }
   
   public void setQualification( String qualification ) {
      this.qualification = qualification;
   }

   public String getSubjectexpertise( ) {
      return subjectexpertise;
   }

   public void setSubjectexpertise( String subjectexpertise ){
      this.subjectexpertise = subjectexpertise;
   }
}

Tạo một lớp con (lớp) cho lớp Nhân viên có tên NonTeachingStaff.java phía dưới cái com.tutorialspoint.eclipselink.entitygói hàng. Lớp Thực thể NonTeachingStaff được hiển thị như sau:

package com.tutorialspoint.eclipselink.entity;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
public class NonTeachingStaff extends Staff {
   private String areaexpertise;

   public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
      super( sid, sname );
      this.areaexpertise = areaexpertise;
   }

   public NonTeachingStaff( ) {
      super( );
   }

   public String getAreaexpertise( ) {
      return areaexpertise;
   }

   public void setAreaexpertise( String areaexpertise ) {
      this.areaexpertise = areaexpertise;
   }
}

Persistence.xml

Tệp Persistence.xml chứa thông tin cấu hình của cơ sở dữ liệu và thông tin đăng ký của các lớp thực thể. Tệp xml được hiển thị như sau:

<?xml version="1.0" encoding = "UTF-8"?>
<persistence version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

   <persistence-unit name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
      <class>com.tutorialspoint.eclipselink.entity.Staff</class>
      <class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
      <class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
      
      <properties>
         <property name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/>
         <property name = "javax.persistence.jdbc.user" value = "root"/>
         <property name = "javax.persistence.jdbc.password" value = "root"/>
         <property name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver"/>
         <property name = "eclipselink.logging.level" value = "FINE"/>
         <property name = "eclipselink.ddl-generation" value="create-tables"/>
      </properties>
      
   </persistence-unit>
</persistence>

Hạng dịch vụ

Các lớp dịch vụ là phần thực hiện của thành phần nghiệp vụ. Tạo một gói dưới‘src’ gói có tên ‘com.tutorialspoint.eclipselink.service’.

Tạo một lớp có tên SaveClient.javatrong gói đã cho để lưu trữ các trường lớp Staff, TeachingStaff và NonTeachingStaff. Lớp SaveClient được hiển thị như sau:

package com.tutorialspoint.eclipselink.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;

public class SaveClient {
   public static void main( String[ ] args ) {
      EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
      EntityManager entitymanager = emfactory.createEntityManager( );
      entitymanager.getTransaction( ).begin( );

      //Teaching staff entity 
      TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
      TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
      
      //Non-Teaching Staff entity
      NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
      NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");

      //storing all entities
      entitymanager.persist(ts1);
      entitymanager.persist(ts2);
      entitymanager.persist(nts1);
      entitymanager.persist(nts2);

      entitymanager.getTransaction().commit();
      entitymanager.close();
      emfactory.close();
   }
}

Sau khi biên dịch và thực thi chương trình trên, bạn sẽ nhận được thông báo trong bảng điều khiển của Eclipse IDE. Đối với đầu ra, hãy kiểm tra MySQL workbench như sau:

Tại đây, ba bảng được tạo và Staff bảng chứa bản ghi null.

Kết quả của TeachingStaff ở định dạng bảng được hiển thị như sau:

Sid Trình độ chuyên môn Tên của Chủ đề
1 MSC MED Gopal Toán học
2 GIƯỜNG BSC Manisha Tiếng Anh

Bảng trên đây TeachingStaff chứa các trường của cả Thực thể Nhân viên và Giảng viên.

Kết quả của NonTeachingStaff ở định dạng bảng được hiển thị như sau:

Sid Areaexpertise Tên của
3 Tài khoản Hài lòng
4 Quản trị viên văn phòng Krishna

Bảng trên NonTeachingStaff chứa các trường của cả Thực thể Staff và NonTeachingStaff.