编写使用InheritanceType.SINGLE_TABLE的多态实体的Spring Data Repository可以按照以下步骤进行:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "entity_type", discriminatorType = DiscriminatorType.STRING)
public abstract class Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// getters and setters
}
@Entity
@DiscriminatorValue("child1")
public class Child1 extends Entity {
// additional fields and methods specific to Child1
}
@Entity
@DiscriminatorValue("child2")
public class Child2 extends Entity {
// additional fields and methods specific to Child2
}
@Repository
public interface EntityRepository extends JpaRepository {
// additional query methods if needed
}
@Service
public class EntityService {
private final EntityRepository entityRepository;
public EntityService(EntityRepository entityRepository) {
this.entityRepository = entityRepository;
}
public void saveEntity(Entity entity) {
entityRepository.save(entity);
}
public List getAllEntities() {
return entityRepository.findAll();
}
public Optional getEntityById(Long id) {
return entityRepository.findById(id);
}
// additional service methods if needed
}
以上是一个简单的示例,你可以根据实际需求扩展代码。注意,使用InheritanceType.SINGLE_TABLE时,所有子类实体将在同一个数据库表中存储,并通过一个名为"entity_type"的列进行区分。