1
我一直在保存嵌入式集合时遇到问题。我想出了这个疯狂的解决方案,因为我希望我的懒惰加载模型根据资源领域进行排序。休眠嵌入式地图保存问题
我有三个表:
- 资产(ID)
- assets_resources(ASSET_ID,RESOURCE_ID,primary_image)
- 资源(ID,logical_name)
我已经定义的表hibernate注释如下: Assets.java:
@Entity
@Table(name = "assets")
public class Asset implements java.io.Serializable {
@OneToMany
@Cascade(CascadeType.ALL)
@JoinTable(
name="assets_resources"
, [email protected](name="asset_id")
, [email protected](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;}
}
resource.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字段。
这link演示了我正在尝试做什么。
这就是我开始,但我无法直接从模型排序。我认为答案在于[在这篇博文中](http://ozgwei.blogspot.com/2007/12/hibernate-how-to-map-collection-of.html)。特别是在Alex说“重写equals()和hashCode()非常重要”,但不幸的是我已经没时间进一步研究这个问题了,我将回到标准模型并使用DAO方法来获取排序结果。 – javablah 2011-06-07 13:51:22