[英]@Query JPA returning a blob
無法弄清楚如何從數據庫中檢索“ blob”類型。 無法弄清楚如何在JPA中進行操作。
public interface ActeRepository extends JpaRepository<byte[], String> {
@Query(value = "select doc from t_doc_content", nativeQuery = true)
public List<byte[]> findActeByBordereau(String id);
}
錯誤:
引起原因:java.lang.IllegalArgumentException:不是托管類型:類[位於org.springframework.data.jpa.repository.support的org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)中的B org.springframework.data.jpa.repository.support上的.JpaMetamodelEntityInformation(JpaMetamodelEntityInformation.java:68)在org.springframework.data.jpa.repository.support.JpaInformationFactory(JpaMetamodelEntityInformation.java:67)在org.springframework.data.jpa.repository.support.JpaInformationFactory。 org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:99)位於org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java: 81),位於org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport處的org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:185)處。 org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepository.org.spring.work.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237)上的initAndReturn(RepositoryFactoryBeanSupport.java:251) java:92)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)... 29通用框架省略
任何想法 ?
您界面的定義不正確
也許改為
public interface ActeRepository extends JpaRepository< Acte, String> {
主鍵是否為String,如果可以,那么上面的方法就可以了,否則將String
更改為它。 長 ?
這不是JpaRepository
工作方式,在擴展它時,您需要記住它的類型為JpaRepository<T, ID extends Serializable>
,其中T
是您映射為數據庫中的表的POJO,可能使用@Entity
和ID
是該表的主鍵Long
或Integer
,我懷疑您將String作為主鍵是因為整數索引的速度更快。 我不知道您的其余代碼,但舉一個例子:
@Entity
public class File {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@Lob
private byte[] bytes;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
public File() {
}
public File(String name, byte[] bytes, User user) {
this.name = name;
this.bytes = bytes;
this.user = user;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getBytes() {
return bytes;
}
public void setBytes(byte[] bytes) {
this.bytes = bytes;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
@Repository
public interface FileRepository extends JpaRepository<File, Long>{
List<File> findByName(String name);
}
在獲得對象列表之后,您將從每個對象中獲取該bytes變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.