使用CrudRepository在Spring Boot中检索DiscriminatorColumn

时间:2017-05-10 19:10:20

标签: java spring hibernate spring-boot

我目前正在使用Spring Boot开发一个项目。

我正在使用的一个表格是使用DiscriminatorColumn,如下所示:

@Entity
@Table(name = "document_summary", uniqueConstraints = @UniqueConstraint(columnNames={"document_name", "document_type"}))
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "document_type", discriminatorType = DiscriminatorType.STRING)
public class DocumentSummary {
     ...
     //no document type field
     ...
}

正如您所看到的,即使表格中的列被称为" document_type",也不会将其显式创建为单个字段。

通常,我只是创建一个这样的存储库来从数据库中检索文档摘要:

public interface DocumentSummaryRepository extends CrudRepository<DocumentSummary, Long> {
    DocumentSummary findByDocumentType(String documentType);
}

在这种情况下,有没有办法根据列document_type?

检索文档摘要数据

感谢。

2 个答案:

答案 0 :(得分:1)

我认为这不是这样做的方法。

看一下本教程:https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-two-crud/

通过这两种方式,您可以看到在此方案中要调用的列和列。

此外,在关于错误做法的部分中,您还会看到:

  1. 创建扩展Repository接口的基本接口 将常用方法添加到该接口。
  2. 创建扩展我们的基本界面的实际存储库接口。

答案 1 :(得分:0)

尝试更改存储库界面中的findBy方法:

public interface DocumentSummaryRepository extends CrudRepository<DocumentSummary, Long> {
    DocumentSummary findByDocument__type(String documentType);
}

在这里使用双下划线,因为Spring将其视为保留字符:doc