hibernate不会创建表

时间:2011-07-11 07:32:42

标签: java hibernate entity

*我在一个实体中得到以下内容。

@Entity("User")
public class User implements java.io.Serializable {
    @ElementCollection(fetch=FetchType.EAGER)
    @CollectionTable(name="FrameworkUser_Properties")
    public Map<String, String> getProperties() {
       return properties;
    }
    public void setProperties(Map<String, String> properties) {
       this.properties = properties;
    }
}

我收到以下错误

Unsuccessful: create table FrameworkUser_Properties (User_id int not null, properties varchar(255) null, properties_KEY varchar(255) null, primary key (User_id, properties_KEY))

任何人都知道我应该如何做到这一点是property_KEY不是null吗? 我使用Hibernate Hibernate 3.6.5.Final,MSSQL

// Trind

2 个答案:

答案 0 :(得分:1)

我相信你可以这样做:

 @CollectionTable(
        name="FrameworkUser_Properties",
        joinColumns=@JoinColumn(name="OWNER_ID", nullable = false)
  )

答案 1 :(得分:1)

您似乎正在使用hashmap映射值类型的集合。您必须使用@MapKeyColumn

指定hashmap的键列

例如,您可以尝试查看问题是否可以解决:

@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name="FrameworkUser_Properties")
@MapKeyColumn
public Map<String, String> getProperties() {
           return properties;
}