我正在尝试使用Spring Boot 1.5.9在Spring数据存储库中实现自定义方法。释放我创建了存储库:
package com.example.springdatademo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
interface MyEntityRepository extends JpaRepository<MyEntity, String>, CustomMyEntityRepository {
}
提供了自定义存储库:
package com.example.springdatademo;
interface CustomMyEntityRepository {
MyEntity myCustomFindQuery();
}
以及实施:
package com.example.springdatademo;
import org.springframework.stereotype.Component;
@Component
class CustomMyEntityRepositoryImpl implements CustomMyEntityRepository {
@Override
public MyEntity myCustomFindQuery() {
System.out.println("hello from custom query implementation");
return null;
}
}
此外,我还提供了一个调用:
package com.example.springdatademo;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@EntityScan
@EnableJpaRepositories
@SpringBootApplication
public class SpringDataDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataDemoApplication.class, args);
}
@Bean
public CommandLineRunner run(MyEntityRepository repository) {
return (args) -> {
final MyEntity myEntity1 = repository.myCustomFindQuery();
repository.save(new MyEntity(1, "fieldTwo"));
for (MyEntity myEntity : repository.findAll()) {
System.out.println(myEntity);
}
};
}
}
pom。xml
只是由spring初始值设定项生成的普通xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<!-- <version>2.1.9.RELEASE</version>-->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spring-data-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-data-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在Spring Boot 1.5.9上运行项目时。RELEASE我在容器创建时遇到了一个问题:起因:java.lang.IllegalArgumentExctive:未能创建查询方法公共摘要com.example.springdatademo.MyEntitycom.example.springdatademo.CustomMyEntityRepository.myCustomFindQuery()!没有找到用于类型MyEntity的属性myCustomFindQuery!
将Spring Boot版本更改为2.1.9。发布效果很好,给了我预期的结果。
我在spring-data-jpa-1.11.9中找不到任何提示。发布文档
如果你想运行当前代码,那么你需要一个@NamedQuery,如果你想运行hql,或者如果你想在实体类中运行名为MyEntity.myCustomFindQuery的本机查询@NamedNativeQuery
@NamedQuery(name="MyEntity.myCustomFindQuery",
query="SELECT 1 as a, 'a' as b from MyEntity")
或
@NamedNativeQuery(name="MyEntity.myCustomFindQuery",
query="SELECT 1 as a, 'a' as b", resultSetMapping="mapmyCustomFindQuery")
@SqlResultSetMapping(name = "mapmyCustomFindQuery", classes = {
@ConstructorResult(targetClass = MyEntity.class, columns = {
@ColumnResult(name = "a"), @ColumnResult(name = "b")
})
})
或者,您可以将这两个存储库分开(这意味着MyEntityRepository不应该扩展MyEntityRepositoryCustom)
在这种情况下,您的应用程序类将如下所示
@Autowired
MyEntityRepository repository;
@Autowired
MyEntityRepositoryCustom entityRepositoryCustom;
public static void main(String[] args) {
SpringApplication.run(SpringDataDemoApplication.class, args);
}
@Bean
public CommandLineRunner run() {
return (args) -> {
final MyEntity myEntity1 = entityRepositoryCustom.myCustomFindQuery();
repository.save(new MyEntity(1, "fieldTwo"));
for (MyEntity myEntity : repository.findAll()) {
System.out.println(myEntity);
}
};
}
我刚刚检查了你的代码,并且能够修复它。我就是这么做的
将MyEntityRepositoryCustomImpl重命名为MyEntityRepositoryImpl
正如我在评论中告诉你的,cutom存储库应该命名为MyEntityRepositoryCustom
(我想你已经这么做了)
命名约定是这里的关键。Impl类应命名为
当通过mysqli使用php连接数据库时,页面底部显示错误 我在此附上代码 错误来了 注意:未定义的属性:mysqli::$connection\u C:\xampp\htdocs\work\Cs\Admin Panel\dbConnect\u考试中出现错误。php第9行 请帮忙!!!!
我试图只显示一个覆盖,如果我的搜索输入包含任何文本。 这是我的模板,其中我的输入字段是: : 当我在控制台中进行检查时,会更新我在输入字段中写入的任何文本。 然后,我尝试将此变量传递给另一个组件,该组件保存我的overlay div: Overlay.vue: 然而,这给我下面的错误: [Vue warn]:呈现错误:“TypeError:无法读取未定义的属性'length'” 我到底做错了什么?
我在构建中添加自定义方法时遇到问题。gradle文件来检索git分支并提交哈希。这是我的密码: 问题出在哪里?我得到了以下错误: 我的gradle插件版本是3.5
您需要创建一个通用的JpaRepository,以便处理系统进行的所有事务。在这里遵循这个示例。 它与实现有点不同,因为我的目标不是执行搜索,而是操作save方法。 unsatisfiedDependencyException:创建名为“sistema menuservice”的bean时出错:通过字段“sistema menurepository”表示未满足的依赖关系;嵌套异常是org.spri
问题内容: 我在Windows上安装了spark,但无法运行,并显示以下错误: 火花执行的完整日志如下: 问题答案: 正如您发布的链接中所述,我遇到了完全相同的问题,并经历了许多可能的解决方案,但当时没有任何效果。通过运行spark-shell命令,它将在C:中创建tmp \ hive目录,并最终发现权限存在问题。我确保我的HADOOP_HOME设置正确并且包含\ bin \ winutils.e
本文向大家介绍Laravel实现自定义错误输出内容的方法,包括了Laravel实现自定义错误输出内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel实现自定义错误输出内容的方法。分享给大家供大家参考,具体如下: 这里分析一下laravel对于提交的数据进行验证,怎么自定义错误输出的内容 在根目录下运行命令 会在app\Http\Requests目录下创建PostUpda