当我运行下面的项目时,我收到了以下错误。我该如何修复它?
原因:java. lang.非法参数异常:无法为方法公共摘要com. example. pharmanic. model. Rdhs_Hospital_Current_Stock com. example. pharmanic. repository创建查询. Rdhs_Hospital_Current_StockRepository. findBysr_no(java. lang. String)!未找到类型Rdhs_Hospital_Current_Stock的属性sr!
这是我的Rdhs_Hospital_Current_Stock
模型类。
@Entity
@Data
@Table(name = "Rdhs_Hospital_Current_Stock")
public class Rdhs_Hospital_Current_Stock {
@Id
private Long batchId;
private int quantity;
private String expiredate;
@ManyToOne
private Hospital_By_Rdhs hospital_by_rdhs;
@ManyToOne
@JoinColumn(name = "sr_no", nullable = false, referencedColumnName = "sr_no")
private Medicine medicine;
}
sr_no
是Medicine
表的外键。
这是我的Medicine
实体:
@Data
@Entity
public class Medicine {
private @Id String sr_no;
private String name;
private String side_effect;
private String description;
public Medicine() {
}
public Medicine(String sr_no, String name, String side_effect, String description) {
this.sr_no = sr_no;
this.name = name;
this.side_effect = side_effect;
this.description = description;
}
}
当我将sr_no
与findBy()
函数一起使用时:
@GetMapping("/rhstock/{id}")
ResponseEntity<?> getMedicine(@PathVariable String id){
Optional<Rdhs_Hospital_Current_Stock> rdhs_hospital_current_stock = Optional.ofNullable(rdhs_hospital_current_stockRepository.findBysr_no(id));
return rdhs_hospital_current_stock.map(response->ResponseEntity.ok().body(response)).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
这是我的仓库:
public interface Rdhs_Hospital_Current_StockRepository extends JpaRepository<Rdhs_Hospital_Current_Stock,Long> {
Rdhs_Hospital_Current_Stock findBysr_no(String id);
}
3条答案
按热度按时间xkftehaa1#
灵感来源:Spring-Data-Jpa Repository - Underscore on Entity Column Name
下划线
_
是Spring Data查询派生中的保留字符(有关详细信息,请参阅参考文档),可能允许手动属性路径描述。sr_no
更改为srNo
。更新存储库函数
Rdhs_Hospital_Current_Stock findBymedicine_srNo(String id);
nmpmafwu2#
我解决了这个错误。我在Reposity接口和控制器类中进行了如下更改
存储库接口-:
控制器类-:
wvt8vs2t3#
要继续使用派生查询,可以将sr_no更改为srNo。
您可以通过使用原生查询来解决这个问题,但我的建议是每次都使用派生查询,因为它是可以使用的。