JPA Repository Lob专栏

时间:2017-08-17 15:39:56

标签: java spring spring-data spring-data-jpa jpql

是否可以通过lob-column过滤来实现JPA-repository?

我有以下代码:

@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());

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

1 个答案:

答案 0 :(得分:1)

当然,前提是您的数据库支持它。

我建议您编写如下所示的查询,因为可以在不使用@Query注释的情况下完全解决要求。

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

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

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

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