Java 无法访问findByDescriptionContaining(字符串描述)的lob流

Java 无法访问findByDescriptionContaining(字符串描述)的lob流,java,spring,Java,Spring,有一个简单的字符串参数搜索。该页面由数据库查询表和简单表单输入+按钮组成。搜索斜杠过滤器是通过存储库和控制器中的插件实现的。模板引擎是Freemarker 但是,如果搜索输入包含现有数据,它会抛出一个异常嵌套的异常是org.hibernate.HibernateException:无法访问lob流。空数据和不存在数据可以正常工作,分别显示没有查询或全部查询 模型 存储库 @Repository public interface DBFileRepository extends JpaReposi

有一个简单的字符串参数搜索。该页面由数据库查询表和简单表单输入+按钮组成。搜索斜杠过滤器是通过存储库和控制器中的插件实现的。模板引擎是Freemarker

但是,如果搜索输入包含现有数据,它会抛出一个异常嵌套的异常是org.hibernate.HibernateException:无法访问lob流。空数据和不存在数据可以正常工作,分别显示没有查询或全部查询

模型

存储库

@Repository
public interface DBFileRepository extends JpaRepository<DBFile, String> {
    List<DBFile> findByDescriptionContaining(String description);
}
控制器

@Autowired
    private DBFileRepository dbFileRepository;

@GetMapping("/search")
    public String search(@RequestParam(required = false, defaultValue = "") String search, Model model) {
        Iterable<DBFile> dbFiles;
        if (search != null && !search.isEmpty()) {
            dbFiles = dbFileRepository.findByDescriptionContaining(search);
        } else {
            dbFiles = dbFileRepository.findAll();
        }
        model.addAttribute("dbFiles", dbFiles);
        return "search";
    }
模板

<@c.page>

    <form method="get">
        <div class="form-group">
            <input type="text" class="form-control" name="search" value="${search?ifExists}" />
        </div>
        <div class="form-group">
            <button type="submit" class="btn btn-primary">Search</button>
        </div>
    </form>
    <div class="table">
        <table class="table table-hover">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Description</th>
                </tr>
            </thead>
            <tbody>
            <#list dbFiles as dbFile>
                <tr>
                    <td>${dbFile.fileName}</td>
                    <td>${dbFile.description}</td>
                </tr>
            </#list>
            </tbody>
        </table>
    </div>

</@c.page>
日志


当您使用JpaRepository的findBy match时,后缀必须是您试图获取的字段,例如:

@Repository
public interface DBFileRepository extends JpaRepository<DBFile, String> {
    List<DBFile> findByDescription(String description);
}

当您使用JpaRepository的findBy match时,后缀必须是您试图获取的字段,例如:

@Repository
public interface DBFileRepository extends JpaRepository<DBFile, String> {
    List<DBFile> findByDescription(String description);
}
解决方案:

在添加spring.jpa.properties.hibernate.jdbc.lob.non_context_creation=true之后,我得到了另一个异常-org.postgresql.util.PSQLException:在自动提交模式下可能无法使用大型对象

但后来我找到了一个解决方案,对我来说绝对有效: 解决方案:

在添加spring.jpa.properties.hibernate.jdbc.lob.non_context_creation=true之后,我得到了另一个异常-org.postgresql.util.PSQLException:在自动提交模式下可能无法使用大型对象

但后来我找到了一个解决方案,对我来说绝对有效:

将@Transactional添加到您的存储库可能会解决我的提交问题

@Repository
@Transactional
public interface DBFileRepository extends JpaRepository<DBFile, String> {
    List<DBFile> findByDescription(String description);
}

将@Transactional添加到您的存储库可能会解决提交问题

@Repository
@Transactional
public interface DBFileRepository extends JpaRepository<DBFile, String> {
    List<DBFile> findByDescription(String description);
}

可能重复的@Compass这些提示都不起作用,不幸的是可能重复的@Compass这些提示都不起作用,不幸的是为什么?我需要查询的不完全匹配,所以我使用了JPA上的官方文档,但仍然按照您的建议进行了尝试,并得到了相同的例外情况stacktrace中的原因是:java.sql.SQLFeatureNotSupportedException:Method org.postgresql.jdbc.PgConnection.createClob尚未实现。,应用此解决方案github Postgresql项目为什么?我需要查询的不完全匹配,所以我使用了JPA上的官方文档-但仍然按照您的建议进行了尝试,并得到了相同的异常stacktrace中的原因是:java.sql.SQLFeatureNotSupportedException:Method org.postgresql.jdbc.PgConnection.createClob尚未实现。应用此解决方案github postgresql项目