这里有Spring Boot、Hibernate/JPA和MySQL。我有下表:
CREATE TABLE IF NOT EXISTS fizzbuzzes (
fizzbuzz_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
fizzbuzz_type_a VARCHAR(250) NOT NULL,
fizzbuzz_type_b VARCHAR(250) NOT NULL,
fizzbuzz_type_c VARCHAR(250) NOT NULL,
fizzbuzz_type_d VARCHAR(250) NOT NULL,
fizzbuzz_type_e VARCHAR(250) NOT NULL,
fizzbuzz_type_f VARCHAR(250) NOT NULL,
fizzbuzz_type_g VARCHAR(250) NOT NULL,
fizzbuzz_type_h VARCHAR(250) NOT NULL,
fizzbuzz_type_i VARCHAR(250) NOT NULL,
fizzbuzz_type_j VARCHAR(250) NOT NULL,
fizzbuzz_type_k VARCHAR(250) NOT NULL,
fizzbuzz_type_l VARCHAR(250) NOT NULL,
fizzbuzz_type_m VARCHAR(250) NOT NULL,
fizzbuzz_type_n VARCHAR(250) NOT NULL,
fizzbuzz_type_o VARCHAR(250) NOT NULL,
fizzbuzz_type_p VARCHAR(250) NOT NULL,
CONSTRAINT pk_fizzbuzzes PRIMARY KEY (fizzbuzz_id);
);
我希望此表O/R映射到具有
Map<String,String>
保持A型到P型的嘶嘶声。
因此,与您通常看到的不同:
@Entity
@Table(name = "fizzbuzzes")
public class Fizzbuzz {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "fizzbuzz_type_a")
private String typeA;
@Column(name = "fizzbuzz_type_a")
private String typeB;
// ...
@Column(name = "fizzbuzz_type_a")
private String typeP;
// Getters, setters & ctors
}
。。。相反,我想:
@Entity
@Table(name = "fizzbuzzes")
public class Fizzbuzz {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "???")
private Map<String,String> types;
// Getters, setters & ctors
}
其中
types
可能是硬编码字符串
typeA
,则,
typeB
。。。,
typeP
以及
类型
将是DB表中各列的值。
这有可能做到吗?如果有,如何做到?