私はSpringブートとMySQLを使用してRESTful API Webサービスを作成しています。トップレベルでは、私はエンティティsites
を持っています。第2レベルでは、エンティティfloors
。各site
には、複数のfloors
が含まれている場合があります。ここでMySQLを使用したスプリングブート - RESTful API Webサービス:SQLエラー:1054、SQLState:42S22、 'フィールドリスト'の未知の列
@Entity
public class Floors {
@Id
private String id;
private String floor;
@ManyToOne
private Sites site;
public Sites getSite() {
return site;
}
public void setSite(Sites site) {
this.site = site;
}
public Floors(){}
public Floors(String id, String floor, String siteId) {
super();
this.id = id;
this.floor = floor;
this.site = new Sites(siteId, "", "");
}
//getters and setters
がFloorsController
次のとおりです:ここで
@RestController
public class FloorsController {
@Autowired
private FloorsService floorsService;
@RequestMapping("/api/sites/{id}/floors")
public List<Floors> getAllFloors(@PathVariable String id){
return floorsService.getAllFloors(id);
}
@RequestMapping(method = RequestMethod.POST, value = "/api/sites/{siteId}/floors")
public void addFloor(@RequestBody Floors floor, @PathVariable String siteId){
floor.setSite(new Sites(siteId, "",""));
floorsService.addFloor(floor);
}
}
がSitesService
である:ここで は、クラスFloors
ある
@Service
public class SitesService {
@Autowired
private SitesRepository sitesRepository;
public List<Sites> getAllSites(){
List<Sites> sites = new ArrayList<>();
sitesRepository.findAll()
.forEach(sites::add);
return sites;
}
public void addSite(Sites site){
sitesRepository.save(site);
}
}
そして、ここで私のFloorsRepository
:
public interface FloorsRepository extends CrudRepository<Floors, Integer> {
public List<Floors> getFloorsBySiteId(String siteId);
}
私はそれがうまく機能し、すべてのサイトのリストを取得するには
/api/sites
を使用する場合
CREATE TABLE `employeelocator1`.`sites` (
`id` VARCHAR(45) NOT NULL,
`site` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
CREATE TABLE `employeelocator1`.`floors` (
`id` VARCHAR(45) NOT NULL,
`floor` VARCHAR(45) NULL,
`siteId` VARCHAR(45) NULL,
PRIMARY KEY (`id`),
INDEX `FK_siteId_idx` (`siteId` ASC),
CONSTRAINT `FK_siteId`
FOREIGN KEY (`siteId`)
REFERENCES `employeelocator1`.`sites` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
:
は、その後のMySQL Workbenchで、私は2つのテーブルを作成しました。原因私のデータベースとテーブルと間違って何かに
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1054, SQLState: 42S22
o.h.engine.jdbc.spi.SqlExceptionHelper : Unknown column 'floors0_.site_id' in 'field list'
それは:私は/api/sites/1/floors
を使用してサイト#1の全フロアのリストを取得しようとする。しかし、私はエラーを取得しますか?コードに何か問題がありますか?