java - JPA 存储库 Lob 列

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

是否可以通过 lob 列过滤来实现 JPA 存储库?

我有以下代码:

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

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

最佳答案

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

我建议您按如下所示编写您的查询,因为无需使用 @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

关于java - JPA 存储库 Lob 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45739517/

相关文章:

java - 我可以使用 Spring 注入(inject)来注入(inject)枚举吗?

java - 在 Spring Boot 中使用 REST API 时出错

java - 解析wireMock中的动态路径

ajax - Spring MVC检测ajax请求

java - 字符串数组等于 Cursor.getstring() 给我 NullPointer 异常

java - 如何修复 'java.lang.ClassCastException: Activity must implement fragment' s 回调'

javascript - Electron 应用程序 : Call java jar

java - 尝试遍历实体 ID 时出现 ClassCastException : Integer cannot be cast to Long,

Spring Data Jdbc - 将内部类映射到表列

java - Spring 3 Autowiring 始终为空