gpt4 book ai didi

java - Hibernate嵌入 map 保存问题

转载 作者:行者123 更新时间:2023-12-01 05:44:30 25 4
gpt4 key购买 nike

我在保存嵌入式集合时遇到问题。我想出了这个疯狂的解决方案,因为我希望我的延迟加载模型能够根据资源中的字段进行排序。

我有三个表:

  • Assets (id)
  • assets_resources(asset_id、resource_id、primary_image)
  • 资源(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;}
}

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;}
}

我可以迭代 Controller 中延迟加载的 map ,但我似乎无法保存/更新嵌入字段。具体来说,我无法更新 Primary_image 字段。

<小时/>

这个link展示了我正在尝试做的事情。

最佳答案

您是否能够将属性值保存在数据库中。因为我认为您将无法保存该值,因为您尚未将其映射到数据库中的某些列。尝试删除 Embedded,然后添加表和列属性..

关于java - Hibernate嵌入 map 保存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6257304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com