使用自动更新(hibernate.hbm2ddl.auto = update)我有一个实体可以创建两个表: myentity和myentityconfigurationProperties。 这在Mysql 5中运行良好,但在SQL Server 2005中它不会创建属性表。
任何人都知道这件事吗?我自己没有尝试创建表,我想避免这种情况,所以我不知道它是否在SQL服务器中工作,但它在Mysql中工作正常。
这是实体(简化):
@Entity
public class MyEntity {
Map<String, String> configurations = new HashMap<String, String>();
long id = -1;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@CollectionOfElements(fetch = FetchType.EAGER)
@JoinTable(
name = "myentityconfigurationProperties",
joinColumns = @JoinColumn(name = "id")
)
@org.hibernate.annotations.MapKey(
columns = @Column(name = "propertyKey")
)
@Column(name = "propertyValue", nullable = false)
@Cascade(value = org.hibernate.annotations.CascadeType.ALL)
public Map<String, String> getConfigurations() {
return configurations;
}
public void setConfigurations(Map<String, String> configurations) {
this.configurations = configurations;
}
}
答案 0 :(得分:0)
错误是SQL服务器不允许空键,MySQL显然会处理这些空键。 所以修复是:
@org.hibernate.annotations.MapKey(
columns = @Column(name = "propertyKey", nullable = false)