2017-02-12 3 views
0

JSONにネストされたオブジェクトのリストが含まれていないという問題に直面しました。JSONのネストされたオブジェクトのリストを取得できません

私は2つのクラスを持っていますが、そのうちの1つは自動サービスに関する情報を持ち、もう1つはサービスに関する情報を含んでいます。

1つの自動サービスには多くのサービスがあります。ですから、私たちは関係を持っています。

AutoServiceクラス:

@Entity 
@Table(name = "AutoRate") 
public class AutoService { 

    public AutoService() { 
    } 

    @Id 
    @GeneratedValue(generator = "increment") 
    @GenericGenerator(name = "increment", strategy = "increment") 
    private long id; 

    @Column(name = "serviceName", nullable = false) 
    private String serviceName; 

    @Column(name = "imageURL", nullable = false) 
    private String imageURL; 

    @Column(name = "mapCoordinate", nullable = false) 
    private String mapCoordinate; 

    @Column(name = "websiteURL", nullable = false) 
    private String websiteURL; 

    @Column(name = "phoneNumber", nullable = false) 
    private String phoneNumber; 

    @OneToMany(fetch = FetchType.EAGER) 
    @JoinColumn(name = "autoServiceId") 
    private List<Service> services; 

    public long getId() { 
     return id; 
    } 

    public String getServiceName() { 
     return serviceName; 
    } 

    public String getImageURL() { 
     return imageURL; 
    } 

    public String getMapCoordinate() { 
     return mapCoordinate; 
    } 

    public String getWebsiteURL() { 
     return websiteURL; 
    } 

    public String getPhoneNumber() { 
     return phoneNumber; 
    } 
} 

Serviceクラス:

@Entity 
@Table(name = "Service") 
public class Service { 

    public Service() { 
    } 

    @Id 
    @GeneratedValue(generator = "increment") 
    @GenericGenerator(name = "increment", strategy = "increment") 
    @Column(name = "serviceId", unique = true, nullable = false) 
    private long serviceId; 

    @Column(name = "serviceName", nullable = false) 
    private String serviceName; 

    @Column(name = "category", nullable = false) 
    private String category; 

    @Column(name = "price", nullable = false) 
    private int price; 

    @Column(name = "autoServiceId", nullable = false) 
    private long autoServiceId; 

    public long getId() { 
     return serviceId; 
    } 

    public String getCategory() { 
     return category; 
    } 


    public int getPrice() { 
     return price; 
    } 

    public String getServiceName() { 
     return serviceName; 
    } 

    public long getAutoServiceId() { 
     return autoServiceId; 
    } 
} 

また、私は、DBからオブジェクトを取得するにはJpaRepositoryを使用しています:ここで

public interface AutoRateRepository extends JpaRepository<AutoService, Long> { 
} 

Controllerクラスです。

@RestController 
@RequestMapping("/directory") 
public class ServiceController { 

    @Autowired 
    private AutoRateService dataBaseService; 

    @RequestMapping(value = "/get", method = RequestMethod.GET) 
    @ResponseBody 
    public List<AutoService> getData(){ 
     List<AutoService> dataList = dataBaseService.getAll(); 
     return dataList; 
    } 
} 

しかし、私は、JSONオブジェクトを取得しようとしていたとき、私は次の取得しています:

[ 
    { 
    "id": 1, 
    "serviceName": "SpeedyName", 
    "imageURL": "Url for speedy", 
    "mapCoordinate": "123123 44121 ", 
    "websiteURL": "speedy.com", 
    "phoneNumber": "1231251" 
    }, 
    { 
    "id": 2, 
    "serviceName": "Другой сервис", 
    "imageURL": "Урл для второго сервиса", 
    "mapCoordinate": "123 12фывфы", 
    "websiteURL": "другойсервис.ком", 
    "phoneNumber": "12312333" 
    } 
] 

ネストされたオブジェクトのリストがありませんデータベースから(List<Services>

あなたは私がこれを解決するのに役立つことができます問題?

私がコメントで指定されているように、あなたはシリアル化のためのコレクションを暴露AutoServiceエンティティにgetServices()方法を逃している

+3

公開リストを追加 getServices(){...}メソッドをオートサービスクラス –

答えて

1

(私は@JsonManagedReference注釈を逃していたことを言われましたが、それは私を助けてくれませんでした

Serviceエンティティに親の後方参照がある場合AutoService JSONフレームワークがサイクリックループの処理方法を認識していることを確認する必要があります。スタックをオーバーフローさせないようにAutoServiceインスタンスをシリアル化するときにバックリファレンスを無視するトリガーこんにちは。

+0

にお寄せいただきありがとうございました。 – Andrew

関連する問題