Java Hibernate嵌入式地图保存问题

Java Hibernate嵌入式地图保存问题,java,hibernate,Java,Hibernate,我在保存嵌入式收藏时遇到了麻烦。我提出了这个疯狂的解决方案,因为我希望我的延迟加载模型根据资源中的字段进行排序 我有三张桌子: 资产(id) 资源(资源id、资源id、主映像) 资源(id、逻辑名称) 我定义了带有hibernate注释的表,如下所示: Assets.java: @Entity @Table(name = "assets") public class Asset implements java.io.Serializable { @OneToMany @Cascade(Cas

我在保存嵌入式收藏时遇到了麻烦。我提出了这个疯狂的解决方案,因为我希望我的延迟加载模型根据资源中的字段进行排序

我有三张桌子:

  • 资产(id)
  • 资源(资源id、资源id、主映像)
  • 资源(id、逻辑名称)
我定义了带有hibernate注释的表,如下所示: 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;}
}
resource.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;}
}
@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;}
}
我可以在控制器中迭代延迟加载的映射,但似乎无法保存/更新嵌入字段。具体来说,我无法更新主图像字段



这证明了我在尝试做什么

您是否能够在数据库中保存属性值。因为我认为您将无法保存该值,因为您没有将其映射到数据库中的某个列。尝试removind Emmbedded,然后添加表和列属性

这是我开始的,但我无法直接从模型中排序。我认为答案是谎言。特别是Alex说“重写equals()和hashCode()非常重要”,但不幸的是,我已经没有时间进一步研究这个问题了,我将回到标准模型,并使用DAO方法来获得排序结果。