这样的问题,我有一个实体,我需要通过选择得到这个实体的对象列表,也就是通过body_material字段,也就是比如说找到body_material索引为2的所有BoatCards,我是用Spring在Java中做的,我添加了Dao,Service,Controller和实体的类
车身材料实体:
@Entity
@Table(name = "boat_body_material")
@Data
@NoArgsConstructor
public class BoatBodyMaterial {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "matcode")
private Integer matcode;
@Column(name = "matname")
private String matname;
@Column(name = "matnote")
private String matnote;
}
船卡实体:
@Entity
@Table(name = "boat_cards")
@Data
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BoatCards {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cardid")
Long cardid;
@Column(name = "reg_num")
String regNum;
@Column(name = "tiket_num")
String tiketNum;
@Column(name = "boat_name")
String boatName;
@ManyToOne
@JoinColumn(name = "boat_type")
BoatTypes boatType;
@Column(name = "boat_year")
String boatYear;
@Column(name = "boat_vin")
String boatVin;
@Column(name = "parking_place")
String parkingPlace;
@ManyToOne
@JoinColumn(name = "sa_category")
SaCategory saCategory;
@Column(name = "boat_length")
String boatLength;
@Column(name = "boat_width")
String boatWidth;
@Column(name = "boat_height")
String boatHeight;
@ManyToOne
@JoinColumn(name = "body_material")
BoatBodyMaterial bodyMaterial;
@Column(name = "boat_payload")
Long boatPayload;
@Column(name = "passengers_num")
Long passengersNum;
@Column(name = "service_life")
String serviceLife;
@Column(name = "engine_num")
Long engineNum;
@ManyToOne
@JoinColumn(name = "owner")
PersonData owner;
@ManyToOne
@JoinColumn(name = "agent")
PersonData agent;
@Column(name = "note")
String note;
}
刀类:
public interface BoatCardsDao extends JpaRepository<BoatCards, Integer> {
@Query(value = "SELECT * from gims.boat_body_material where matcode = 1", nativeQuery = true)
BoatBodyMaterial findByBodyMaterial ();
List<BoatCards> findAllByBodyMaterial(BoatBodyMaterial list);
}
服务等级:
public List<BoatCards> getAllByMaterial() {
BoatBodyMaterial matcodeFromTable = boatCardsDao.findByBodyMaterial();
List<BoatCards> boatCards = boatCardsDao.findAllByBodyMaterial(matcodeFromTable);
return boatCards;
}
控制器类:
@GetMapping(path="/get")
public List<BoatCards> get() {
return boatCardsService.getAllByMaterial();
}
我得到错误:
2023-01-26T10:33:20.193+03:00 ERROR 20852 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [by.compit.gimsshd.model.BoatBodyMaterial] for value '{1, metal, produce from metal}'] with root cause
我解决这个问题!谢谢!
public interface BoatCardsDao extends JpaRepository<BoatCards, Integer> {
List<BoatCards> findAllByBodyMaterialMatcode(Integer bodyMaterial);
}
1条答案
按热度按时间t3psigkw1#
试试这样的方法: