我的简单Entity类看起来像这样-
Entity
@Table(name ="my_class", uniqueConstraints = {@UniqueConstraint(name = "AAndBAndCAndD", columnNames = { "A","B","C","D"}) })
public class MyClass implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@Column(name = "A")
private String A;
@Column(name = "B")
private String B;
@Column(name = "C")
private Integer C;
@Column(name = "D")
private Integer D;
@Column(name = "E")
private Long E;
@ElementCollection(targetClass = String.class, fetch = FetchType.EAGER)
@CollectionTable(name="values_table", joinColumns = @JoinColumn(name="some_table_id", referencedColumnName = "id"))
@Column(name="values")
private Set<String> values;
And I created 2 tables like below -
CREATE TABLE some_table (
id serial PRIMARY KEY,
A character varying(10) NOT NULL,
B character varying(10) NOT NULL,
C int NOT NULL,
D int NOT NULL,
E bigint,
UNIQUE (A,B,C,D)
);
CREATE TABLE values_table (
some_table_id int NOT NULL,
values VARCHAR(500),
constraint fk_values_table_some_table
foreign key (some_table_id)
REFERENCES some_table(id)
);
当我将其作为服务的一部分运行时,我看到以下错误
原因:org.hibernate.MappingException:集合外键Map的列数错误:MyClass.values类型:component[id,id] at org.hibernate.mapping.Collection.validate(Collection.java:309)at org.hibernate.mapping.Set.validate(Set.java:40)at org.hibernate.cfg.Configuration.validate(configuration. java:1364)at org.hibernate.cfg.Configuration.buildSessionFactory(configuration. java:1851)at org. hibernate. jpa. boot. internal. configuration. buildManagerFactoryBuilderImpl$4.perform(configuration. FactoryBuilderImpl.java:852)26 more
我尝试了不同的东西,但无法修复错误。谁能帮我找出上面代码的错误?的类的名称
我试图添加一个ID字段的值表,但没有运气。我不明白外键Map有什么问题。
1条答案
按热度按时间gojuced71#
我想你必须把
PRIMARY KEY
定义为values_table
下面是代码片段