簡體   English   中英

@Query JPA返回Blob

[英]@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,可能使用@EntityID是該表的主鍵LongInteger ,我懷疑您將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM