2017-08-17 51 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