2017-10-31 3 views
0

は、次のようにだから私はこの関係をマッピングし@OneToMany関係product間とproductReviewありますが、私は製品のfindAll()メソッドを呼び出したときに、それは私にBad String の誤差を与えます私は@OneToMany関係を削除したときに、私は問題が何であるかを把握カント、それは完全に@OneToManyマッピングは、私は私の製品クラスに春のフレームワークを使用しています

@Entity 
@Table(name="products") 
public class Product implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    @Id 
    @SequenceGenerator(name="SEQ_PRODUCTS", sequenceName="PRODUCTS_SEQ", allocationSize=1) 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_PRODUCTS") 
    private Long id; 

    @NotEmpty 
    @Column(name="NAME", nullable=false) 
    private String name; 
    @ManyToMany 
    private List<ProductImages> productImages; 

    @OneToMany(mappedBy="product",targetEntity=ProductReview.class,fetch = FetchType.EAGER,cascade = CascadeType.ALL) 
    private List <ProductReview> productReviews; 
    ..... Getter and setter of above fields 
    } 
Product.javaを実行します

ProductReview.class

@Entity 
public class ProductReview implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Id 
    private Long id; 

    private String title; 

    private String message; 

    private Double rating; 

    @ManyToOne 
    private Product product; 
    ..... Getter and setter 
    } 

APIhttp://localhost:8080/api/products

応答:バッド文字列

+0

遅延読み込み機能を追加してみます。 – Sandeep

+0

@FirzaAhmedあなたがもっと情報が必要な場合は、コンソールで例外を取得する必要があります。しかし、ここでの主な問題は、おそらくジャクソンが他のヘルパー情報なしで解決できない何らかの再帰的な関係を得るということです。したがって、注釈やカスタムシリアライザを設定してください。もう一つの選択肢は、 'List productReviews'を持つべきポイントがないように、あなたのプログラムで使わないリレーションの一部を削除することです。 – varren

答えて

0

あなたProductReviewエンティティでは、あなたの製品分野に@JoinColumnアノテーションを追加

@Entity 
public class ProductReview implements Serializable { 

.... 
@ManyToOne 
@JoinColumn(name="product_id") 
private Product product; 
..... Getter and setter 
} 
0

は私が@Sivakumarからの回答とも

あなたは多くのものを使用@varrenからのコメントに同意すると、あなたは、両方の側の関係を置く@ManyToOne@JoinColumn(name="product_id")を使用する必要があります。しかし、最善のアイデアは、必ずしもそれを必要としないので、両側で使用することではありません。

第二に、このために循環参照

製品の - > ProductReference & ProductReference - >製品

ジャクソンシリアライザが無限ループに陥ります。したがって、これを避けるには@JsonIgnoreを使用できます。

関連する問題