问题
我有两个clasess - Profile
和Image
现在Profile
的实例变量为Image
class Profile{
..
..
Image image;
..
..
getters and setters
..
}
现在,情景是
1)图像已保存在图像表中 - 因为它是使用ImageRepo
类'单独保存的。 defualt save()
方法。
class Image{
@Id
@GeneratedValue
private Long id;
private String name;
private String url;
..
..
//getters and setters
}
2)保存Profile
后 - 我在传入的Profile
对象中有图片的网址JSON
3)现在,因为Image的网址是作为JSON中的对象嵌入的 - 保存后Profile
我收到以下错误。
org.hibernate.TransientPropertyValueException:对象引用一个 未保存的瞬态实例 - 保存之前的瞬态实例 潮红
正在尝试将传入的嵌入式Image
对象保存在Profile
JSON中并且没有CASCADE - 但这不是意图。
我只想将已保存的\ persisted Image
对象分配到Profile
。
这里做什么?
JSON:
{
..
..
"profile":{
"name":"fsdf",
"image":{
"name":"sdfsd",
"url":"http://....."
}
}
..
..
答案 0 :(得分: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 );
}
}