SpringDataJPA筆記(15)–Inheritance註解詳解之JOINED
在JPA中使用映射註解Inheritance,有一種策略是JOINED
JOINED – 每個類分別生成一張單獨的表,但是每張表只有自己的屬性,沒有父類的屬性,通過外鍵關聯的形式使兩張表關聯起來
還是簡單寫個demo測試一下
先寫三個實體類
@Data
@Table(name = "inheritance_joined_tb")
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class InheritanceJoinedEntity implements Serializable {
private static final long serialVersionUID = 8139674112977338603L;
@Id
private Long id;
@Column(name = "joined_name")
private String joinedName;
}
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
@Table(name = "inheritance_joined_one_tb")
public class InheritanceJoinedOneEntity extends InheritanceJoinedEntity {
private static final long serialVersionUID = 9042160117012026124L;
@Column(name = "joined_one")
private String joinedOne;
}
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
@Table(name = "inheritance_joined_two_tb")
public class InheritanceJoinedTwoEntity extends InheritanceJoinedEntity {
private static final long serialVersionUID = 9042160117012026124L;
@Column(name = "joined_two")
private String joinedTwo;
}
然後是三個repository接口類
public interface InheritanceJoinedRepository extends JpaRepository<InheritanceJoinedEntity, Long>, JpaSpecificationExecutor<InheritanceJoinedEntity>, Serializable {
}
public interface InheritanceJoinedOneRepository extends JpaRepository<InheritanceJoinedOneEntity, Long>, JpaSpecificationExecutor<InheritanceJoinedOneEntity>, Serializable {
}
public interface InheritanceJoinedTwoRepository extends JpaRepository<InheritanceJoinedTwoEntity, Long>, JpaSpecificationExecutor<InheritanceJoinedTwoEntity>, Serializable {
}
然後寫controller類用於測試
@Autowired
private InheritanceJoinedRepository inheritanceJoinedRepository;
@Autowired
private InheritanceJoinedOneRepository inheritanceJoinedOneRepository;
@Autowired
private InheritanceJoinedTwoRepository inheritanceJoinedTwoRepository;
@PostMapping("/single")
public InheritanceJoinedEntity single(@RequestBody InheritanceJoinedEntity inheritanceJoinedEntity) {
return inheritanceJoinedRepository.save(inheritanceJoinedEntity);
}
@PostMapping("/joined/one")
public InheritanceJoinedOneEntity joined(@RequestBody InheritanceJoinedOneEntity inheritanceJoinedEntity) {
return inheritanceJoinedOneRepository.save(inheritanceJoinedEntity);
}
@PostMapping("/joined/two")
public InheritanceJoinedTwoEntity joined(@RequestBody InheritanceJoinedTwoEntity inheritanceJoinedEntity) {
return inheritanceJoinedTwoRepository.save(inheritanceJoinedEntity);
}
@GetMapping("/joined")
public List<InheritanceJoinedEntity> joined() {
return inheritanceJoinedRepository.findAll();
}
@GetMapping("/joined/one")
public List<InheritanceJoinedOneEntity> joinedOne() {
return inheritanceJoinedOneRepository.findAll();
}
@GetMapping("/joined/two")
public List<InheritanceJoinedTwoEntity> joinedTwo() {
return inheritanceJoinedTwoRepository.findAll();
}
啓動程序,查看數據庫,有三張表
分別通過三個接口寫入數據,再查看數據庫數據
通過接口查詢數據的結果
歡迎關注微信交流