2016-07-29 17 views
0

問題のマッピングは、すでに私は2つのclasessを持って

オブジェクト永続化1)イメージは既にイメージテーブルに保存されています - ImageRepo class 'defualt save()メソッド。 Profileを保存する際に

class Image{ 

@Id 
@GeneratedValue 
private Long id; 
private String name; 
private String url; 

.. 
.. 

//getters and setters 
} 

2) - 私が取得Profile

を保存するときに - 私は今、画像のURLをJSONにオブジェクトとして埋め込まれているので、着信ProfileオブジェクトのJSON

3)で画像のURLを持っています次のエラー。

org.hibernate.TransientPropertyValueException:オブジェクトが 保存されていない一時的なインスタンスを参照する -

をフラッシュする 前に、一時的なインスタンスを保存することがProfile JSONに入ってくる埋め込まImageオブジェクトを保存しようとしているとして、それが起こっていますカスケードはありませんが、これはここでの意図ではありません。

私はちょうど既に保存された\永続化されたImageオブジェクトをProfileに割り当てたいと思います。

ここで何をすればいいですか?

JSON: 
     { 
     .. 
     .. 
     "profile":{ 
        "name":"fsdf", 
        "image":{ 
           "name":"sdfsd", 
           "url":"http://....." 
          } 
        } 

    .. 
    .. 

答えて

0

着信JSONに基づいてデータベースからImageを検索してみませんか?

非常にナイーブと簡単な例:

public class Controller { 
    public void someProfileMethod(String profileJson) { 
    final Profile profile = // create profile from JSON 
    final Image image = imageService.getImageByName(profile.image.name); 
    if (image != null) { 
     profile.setImage(image); 
    } 
    else { 
     profile.setImage(null); 
    } 
    profileService.saveProfile(profile); 
    } 
} 
関連する問題