[英]JPA - 3 columns table to Entity Map
我正在尋找一種方法來對查詢進行分組並將其他值放入 map 但我無法找到沒有加入的單個表的方法。 我的情況如下:
CREATE TABLE metadata (
container_id INT NOT NULL,
metadata_key VARCHAR(50) NOT NULL,
metadata_value VARCHAR(255) NOT NULL,
PRIMARY KEY (container_id, metadata_key)
);
#container_id | #metadata_key | metadata_value
--------------+-------------------------+--------------------
15 | REPORTING_DATE | 20201231
15 | TYPES | T1,T2,Tx
11 | START_DATE | 20201231
1 | SHUTDOWN_ID | 12345
@Entity
@Table(name = "metadata")
public class Metadata {
@Id
@Column(name = "container_id")
private Integer containerId;
// metadata_key:metadata_value ???
private Map<String, String> metadata = new HashMap<>();
...
}
可能嗎?
您應該考慮 2 個表:
First table : container
#id | other stuff
--------------+-------------------------
15 | …
11 | …
1 | …
然后是其他表,例如“metadata_key_value”:
#container_id | #metadata_key | metadata_value
--------------+-------------------------+--------------------
15 | REPORTING_DATE | 20201231
15 | TYPES | T1,T2,Tx
11 | START_DATE | 20201231
1 | SHUTDOWN_ID | 12345
其中 « container_id » 是 « container » 表的 FK
那么映射應該是這樣的:
@Entity
@Table(name = « container »)
public class Container {
@Id
@Column(name = « id »)
private Integer id;
@CollectionTable(name = "metadata_key_value», joinColumns =@JoinColumn(name = "container_id"))
@MapKeyColumn(name = "metadata_key")
@Column(name = "metadata_value")
private Map<String, String> metadata = new HashMap<>();
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.