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以外的所有注释,将导致创建表。显然,无法控制命名,但可以使用。

07-26 09:09