2016-09-20 4 views
0

RestServiceをさ春 - ないNoSuchMethodExceptionはモデル私にリストを返す必要があり、私はこの単純なマッピングを持って

@RestController 
@RequestMapping(value="/api") 
public class ServerRESTController { 

    @Autowired ServerService serverService; 

    @RequestMapping(value="/server/{idServer}", method = RequestMethod.GET) 
    public ResponseEntity<Server> getFloorLatUpdate(@PathVariable int idServer){ 

     Server server = serverService.findById(idServer); 

     return new ResponseEntity<Server>(server, HttpStatus.OK); 

    } 

    @RequestMapping(value="/server/list", method = RequestMethod.GET) 
    public ResponseEntity<List<Server>> listAllServers(){ 

     List<Server> servers = serverService.findAllServers(-1); 

     return new ResponseEntity<List<Server>>(servers, HttpStatus.OK); 

    } 

} 

Server.classオブジェクト呼び出すとき

@Entity 
@Table(name = "server") 
public class Server implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private int serverId; 
    private Piano piano; 
    private String nomeServer; 
    private String serverIp; 
    private String descrizione; 
    private boolean online; 
    private Set<Interruttore> interruttori; 
    private String firmwareVersion; 

    public Server(){ 

    } 

    public Server(int serverId, Piano piano, String nomeServer, String serverIp, String descrizione, boolean online, 
      Set<Interruttore> interruttori, String firmwareVersion){ 
     this.serverId = serverId; 
     this.piano = piano; 
     this.nomeServer = nomeServer; 
     this.descrizione = descrizione; 
     this.serverIp = serverIp; 
     this.online = online; 
     this.interruttori = interruttori; 
     this.setFirmwareVersion(firmwareVersion); 
    } 


    @Id 
    @Column(name = "id_server", unique = true, nullable = false) 
    @GeneratedValue(strategy = IDENTITY) 
    public int getServerId() { 
     return serverId; 
    } 
    public void setServerId(int serverId) { 
     this.serverId = serverId; 
    } 

    @ManyToOne 
    @JoinColumn(name="id_piano") 
    public Piano getPiano() { 
     return piano; 
    } 
    public void setPiano(Piano piano) { 
     this.piano = piano; 
    } 

    @Column(name="nome_server") 
    public String getNomeServer() { 
     return nomeServer; 
    } 
    public void setNomeServer(String nomeServer) { 
     this.nomeServer = nomeServer; 
    } 

    @Column(name="server_ip") 
    public String getServerIp() { 
     return serverIp; 
    } 
    public void setServerIp(String serverIp) { 
     this.serverIp = serverIp; 
    } 

    @Column(name="descrizione") 
    public String getDescrizione() { 
     return descrizione; 
    } 
    public void setDescrizione(String descrizione) { 
     this.descrizione = descrizione; 
    } 

    @Column(name="online") 
    public boolean isOnline() { 
     return online; 
    } 

    public void setOnline(boolean online) { 
     this.online = online; 
    } 

    @JsonIgnore 
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "server") 
    public Set<Interruttore> getInterruttori() { 
     return interruttori; 
    } 

    public void setInterruttori(Set<Interruttore> interruttori) { 
     this.interruttori = interruttori; 
    } 

    @Column(name = "firmware_version") 
    public String getFirmwareVersion() { 
     return firmwareVersion; 
    } 

    public void setFirmwareVersion(String firmwareVersion) { 
     this.firmwareVersion = firmwareVersion; 
    } 

    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result + ((descrizione == null) ? 0 : descrizione.hashCode()); 
     result = prime * result + ((nomeServer == null) ? 0 : nomeServer.hashCode()); 
     result = prime * result + (online ? 1231 : 1237); 
     result = prime * result + ((piano == null) ? 0 : piano.hashCode()); 
     result = prime * result + serverId; 
     result = prime * result + ((serverIp == null) ? 0 : serverIp.hashCode()); 
     return result; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Server other = (Server) obj; 
     if (descrizione == null) { 
      if (other.descrizione != null) 
       return false; 
     } else if (!descrizione.equals(other.descrizione)) 
      return false; 
     if (nomeServer == null) { 
      if (other.nomeServer != null) 
       return false; 
     } else if (!nomeServer.equals(other.nomeServer)) 
      return false; 
     if (online != other.online) 
      return false; 
     if (piano == null) { 
      if (other.piano != null) 
       return false; 
     } else if (!piano.equals(other.piano)) 
      return false; 
     if (serverId != other.serverId) 
      return false; 
     if (serverIp == null) { 
      if (other.serverIp != null) 
       return false; 
     } else if (!serverIp.equals(other.serverIp)) 
      return false; 
     return true; 
    } 

} 

保守サービスを依頼しようとしている私

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Method [listAllServers] was discovered in the .class file but cannot be resolved in the class object 

原因

によって:「きメートル
java.lang.NoSuchMethodException: it.besmart.restcontroller.ServerRESTController.listAllServers() 

なぜこのようなことが起こるのか理解できません。私はいつもこのようにResponseEntityを使用しています...多分Listのためですか?

+0

どのようにプロジェクトを実行/構築していますか?メイヴァン?どのプラグインですか?どのIDEを使用していますか?私はそうは思わない、それはリストのためだ。

+0

私はmaven compieプラグインでmavenを使っている。私のIDEはEclipseですが、私はコマンドラインでビルドします。私の他の残りのコントローラは正常に動作します... – besmart

+0

aspectJを使用していますか? –

答えて

0

私たちが知ることができるように、コード全体を投稿してください。

これは通常、メソッドが間違った場所で呼び出されたり、ビルド環境や実行時環境に不一致がある場合、またはコンストラクタなどで引数が見つからない場合に発生します。

また、クラスパス内のファイルをチェックすることもできます。コンパイル時と実際の実行時環境との間に何らかの理由で不一致がある可能性があります。たとえば、コマンドラインを使用して構築するとします。だから、そこにいくつかの不一致があるかもしれません、チェックの害はありません。

最後に、スペルミスがないかどうかを確認できます。奇妙なことは分かっていますが、大文字と小文字の区別が重要です。

+0

はコントローラ全体とモデルを追加する最初の質問を編集しました – besmart

関連する問題