我被一个非常琐碎的问题困扰了两天。我正在创建一个带有Restendpoint的spring boot项目。有两个实体类-Employee和Address,其中一个映射为OneToMany,一个Employee具有地址列表。我创建了一个EmployeeRepository类,该类实现了JpaRepository,用于执行与员工相关的事务。因此,需要通过地址id获取员工,因此根据我的理解,如果我们必须创建JpaRepository未提供的自定义查询,我们需要在查询方法上方使用@query注释。该方法可以命名为任何名称(我已经将其命名为getByAddress)。我在这里面临着问题。Employee类具有如下地址列表-
@OneToMany
@JoinColumn(name = "eId", referencedColumnName = "empId")
List<Address> address;
现在,每当我试图通过在URL中传递整数地址id来按id获取员工时,它会说,希望在URL中找到一个地址,我怀疑这是因为我已将方法命名为getByAddress。所以我将名称更改为getByAddrId。
这引发异常-
组织。springframework。豆子。工厂BeanCreationException:创建com中定义的名为“employeeRepository”的bean时出错。shweta。Rest存储库。在SpringRestApplication上声明的@EnableJpaRepositories中定义的EmployeeRepository:调用init方法失败;嵌套异常为org。springframework。数据存储库。查询QueryCreationException:无法为公共抽象com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!原因:无法为方法public abstract com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!找不到类型“Employee”的属性“addrId”!;嵌套异常为java。lang.IllegalArgumentException:未能为方法public abstract com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!找不到类型“Employee”的属性“addrId”!
原因:组织。springframework。数据存储库。查询QueryCreationException:无法为公共抽象com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!原因:无法为方法public abstract com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!找不到类型“Employee”的属性“addrId”!;嵌套异常为java。lang.IllegalArgumentException:未能为方法public abstract com创建查询。shweta。Rest实体员工通讯。shweta。Rest存储库。雇员储蓄所。getByAddrId(int)!找不到类型“Employee”的属性“addrId”!
我现在非常困惑,我们可以提供自定义查询方法名称,那么为什么它将我的方法名称视为Employee类中的字段,当然无法找到,因为在我的Employee类中没有像getByAddrId这样的字段。
请看下面我的课程:
我的员工类别:
我的地址类别:
控制器片段:
/**
To get Employee by address id
*/
@GetMapping("/getEmployeeByAddressId/{id}")
public ResponseEntity<Employee> getEmployeebyAddressId(@PathVariable("id") int id){
return new ResponseEntity<Employee>(empService.getEmployeebyAddressId(id), HttpStatus.FOUND);
}
正在从EmployeeRepository调用自定义查询方法的我的服务类方法:
@Override
public Employee getEmployeebyAddressId(int id)
{
Employee emp = employeeRepository.getByAddrId(id);
return emp;
}
我的JpaRepository类具有带有自定义查询的自定义方法(查询在MySQL中运行良好):
@Repository
公共接口员工库扩展JpaRepository
//Native Query
@Query(
name="select * from tb_employee where emp_id = (select e_id from tb_address where addr_id=?1 ", nativeQuery = true)
Employee getByAddrId(int id);
请帮助我,我无法前进,因为这个拦截器,我的要求是创建一个自定义查询方法来运行任何复杂的查询
我发现了问题:
在EmployeeRepository。java,而不是在@Query中提供“name”,而是提供“value”属性,这导致了所有问题。在我将其固定为value之后,它工作得很好,所以下面的代码片段是正确的
@Query(
value="select * from tb_employee where emp_id = (select e_id from tb_address where addr_id=?1) ", nativeQuery = true)
Employee getByAddrId(int id);
问题内容: 我们有一个Angular应用程序,该应用程序获取一些输入参数,并将其发送到后端进行处理。处理结果是一个我们要在新选项卡中打开的pdf文件。 这样做的代码如下所示: 一切正常,但浏览器中的URL显示一些随机生成的字符串,如下所示: 显然,这对于最终用户来说看起来不太好,我们希望显示一些对用户有意义的内容,例如: 我是JS的新手,Angular的新手,HTML的新手,希望我的问题听起来不是
我希望在JavaFX中有一个完全定制的窗口。与此处完全相同的问题: https://code.msdn.microsoft.com/WPF-styling-a-Window-in-fcf4e4ce 使用未DECORATED JavaFX阶段,我必须自己实现所有窗口功能-并失去所有本机窗口行为,包括: 拖动到顶部时最大化 拖动到两侧时的并排视图 单击任务栏时最小化/最大化 我可以以某种方式访问原生W
问题内容: 我需要使用自定义列名来旋转表。请参阅下面的表格格式。 当前格式 : 我想以以下格式显示数据。 所需格式 : 请注意:我不知道连续出现的问题和答案的数量,因此应动态生成列的question1 Answer1。 谢谢 编辑:谢谢您的帮助,我尝试一下您提供给我的动态代码,并得到此错误。 我的桌子是 我打印出SQL,结果如下。 我的原始SQL代码也在下面 等待您的帮助! 问题答案: 您可以通过
问题内容: 我想要一个Java枚举,其值是整数。 例如: 但是我也想要这两个常量的自定义名称, 例如“ Task Created”和“ Task Deleted”(那里有空格)。 我想尽可能优雅地做到这一点,而无需编写 太多额外的代码。 我可以在没有其他 将枚举常量映射到其自定义名称的映射的情况下实现此目标吗? 我在该项目中使用JDK 6。 问题答案: 只需为此添加一个字段: 如果您不想指定字符串
问题内容: 我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是: 并没有帮助我,每次将baseV
问题内容: 为什么这样的结构 给一个错误? 问题答案: 默认参数值在函数定义时评估,但仅在函数调用时可用。因此,参数列表中的参数不能相互引用。 将参数默认为默认值并在代码中为此添加测试是一种常见的模式: