Hibernate未在下面的MetaData类中为dataAttributes映射生成表。代码会编译,但在运行时找不到表。
import javax.persistence.*;
import java.util.HashMap;
import java.util.Map;
@Entity
public class Metadata{
private Integer id;
private Map<String,String> dataAttributes;
public Metadata(){
dataAttributes = new HashMap<>();
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public void addDataAttribute(String key, String value){
dataAttributes.put(key,value);
}
@ElementCollection
@MapKeyColumn(name="key")
@Column(name="value")
@CollectionTable(name="data_attributes", joinColumns=@JoinColumn(name="metaData_id"))
public Map<String, String> getDataAttributes() {
return dataAttributes;
}
public void setDataAttributes(Map<String, String> dataAttributes) {
this.dataAttributes = dataAttributes;
}
}
所有其他实体和表均按预期方式创建,但从未生成该实体和表,并且尝试通过级联保存与MetaData具有一对一关系的实体时,出现“表'nppcvis.data_attributes'不存在”的信息=全部
我正在使用以下属性:
spring.jpa.hibernate.ddl-auto=create
有任何想法吗?
最佳答案
除去@ElementCollection以外的所有注释,将导致创建表。显然,无法控制命名,但可以使用。