休眠嵌入式地图保存问题

问题描述

| 我在保存嵌入式收藏集时遇到了麻烦。我想出了这个疯狂的解决方案,因为我希望我的延迟加载的模型根据资源中的字段进行排序。 我有三个表: 资产(编号) asset_resources(asset_id,resource_id,primary_image) 资源(ID,逻辑名称) 我已经用休眠注释定义了表,如下所示: Assets.java:
@Entity
@Table(name = \"assets\")
public class Asset implements java.io.Serializable {
@OnetoMany
@Cascade(CascadeType.ALL)
@JoinTable(
name=\"assets_resources\",joinColumns=@JoinColumn(name=\"asset_id\"),inverseJoinColumns=@JoinColumn(name=\"resource_id\")
)
@MapKeyColumn(name=\"asset_id\")
@OrderBy(\"logical_name\")
private Map<AssetResource,Resource> resources;
public Map<AssetResource,Resource > getResources() {return resources;}
public void setResources(Map<AssetResource,Resource> resources) {this.resources = resources;}
}
assetResource.java
@Embeddable
public class AssetResource {
private Boolean primary_image;
public Boolean getPrimaryImage() {return primary_image;}
public void setPrimaryImage(Boolean primary_image) {this.primary_image = primary_image;}

private Long id;
public Long getId() {return id;}
}
资源.java
@Entity
@Table(name=\"resources\")
public class Resource implements java.io.Serializable {
...
public String logical_name;
public String getLogicalName() {return logical_name;}
public void setLogicalName(String logical_name) { this.logical_name = logical_name;}
}
尽管可以在控制器中延迟加载地图,但是我似乎无法保存/更新嵌入式字段。具体来说,我无法更新primary_image字段。 此链接演示了我正在尝试做的事情。     

解决方法

        您是否可以将属性值保存在数据库中。因为我认为您将无法保存该值,因为您尚未将其与数据库中的某些列映射。尝试使用removind嵌入,然后添加表和列属性。