2017-08-17 50 views
3

是否可以通过lob-column进行过滤来实现JPA-repository?JPA Repository Lob列

我有以下代码:

@Entity 
@Table(name = "SUBJECT_IDENTIFIER")  
public class SubjectIdentifier implements Serializable { 

    @Id 
    @Column(name = "SUBJECT_IDENTIFIER_ID") 
    private long subjectIdentifierIid; 

    @Lob 
    @Column(name = "SOR_BP_GUID", columnDefinition="BLOB NOT NULL") 
    private byte[] bpGuid; 

    //getter/setter 
} 


public interface SubjectIdentifierRepository extends JpaRepository<SubjectIdentifier, Long> { 

    @Query("select si from SubjectIdentifier si where si.bpGuid= :bpGuid") 
    SubjectRepository findByBpGuid(@Param("bpGuid") byte[] bpGuid); 

} 

//测试

SubjectRepository byBpGuid = subjectIdentifierRepository.findByBpGuid("D9E70D24567E4DAE8FD3ED5898579092".getBytes()); 

,但我无法找到数据库对象。 我是否必须通过其他方式实现此查询?

+0

你的列名(在数据库中,并在注释中定义)是'SOR_BP_GUID'但你的SQL语句正在寻找'si.bpGuid' - 我认为它应该是'si.sor_bp_guid' – ochi

回答

1

当然,只要你的数据库支持它。

我建议按照如下所示编写您的查询,因为无需使用@Query注释即可完全解决需求。

SubjectRepository findOneByBpGuid(@Param("bpGuid") byte[] bs); 

我有点好奇的columnDefinition规范:是数据库列设置为错误的类型不呢?如果可能的话,我倾向于使用columnDefinition。这将使配置数据库不可知。

@Column(name = "SOR_BP_GUID", nullable = false) 

另请参见:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation