Java JPA存储库Lob列
是否可以通过按lob列进行过滤来实现JPA存储库 我有以下代码:Java JPA存储库Lob列,java,spring,spring-data,spring-data-jpa,jpql,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
@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);
}
但我无法从数据库中找到对象。
我必须通过其他方式实现此查询吗?当然,前提是您的数据库支持它 我建议您按照如下所示编写查询,因为无需使用
@query
注释即可完全解决该需求
SubjectRepository findOneByBpGuid(@Param("bpGuid") byte[] bs);
我对columnDefinition
规范有点好奇:如果没有它,db列是否设置为错误的类型?如果可能的话,我更喜欢这句话而不是使用columnDefinition
。这将使配置数据库不可知
@Column(name = "SOR_BP_GUID", nullable = false)
另请参见:您的列名(在DB中,以及在注释中定义的列名)是SOR\u BP\u GUID
,但是您的SQL语句正在查找si.bpGuid
-我认为它应该是si.SOR\u BP\u GUID
@Column(name = "SOR_BP_GUID", nullable = false)