gpt4 book ai didi

java - Hibernate 的 SchemaExport 未强制执行唯一约束

转载 作者:行者123 更新时间:2023-12-03 05:30:42 24 4
gpt4 key购买 nike

我很不确定为什么我的实体类没有创建我所需的表架构

@Entity
@Table(name = "User")
public class User implements Serializable {
private Long id;
private String loginName;

@Id
@GeneratedValue
public Long getId() {
return id;
}
@Column(name = "login_name", unique = true)
public String getLoginName() {
return loginName;
}
//other setters
}

当我使用架构导出时。

new SchemaExport(config).create(true, true);

它创建了此 SQL,但随后它不会向我的 login_name 字段添加任何唯一约束。

drop table User
create table User (id bigint generated by default as identity, login_name varchar(255)primary key (id))

我正在使用 Apache Derby,我已经检查了 Derby 的引用手册,它确实支持列上的唯一约束。我尝试在类上添加 uniqueconstraint 注释,但结果是相同的。

有什么想法吗?

最佳答案

问题在于 Derby 扩展了 DB2 Dialect,它将“supportsNotNullUnique”指定为“false”。因此,解决方案是创建自定义 Derby 方言并更改此方法以返回“true”,或者将您的字段标记为 nullable=false。

@Column(name = "login_name", unique = true, nullable=false)

import org.hibernate.dialect.DerbyDialect;

public class CustomDerbyDialect extends DerbyDialect {
public boolean supportsNotNullUnique() {
return true;
}
}

关于java - Hibernate 的 SchemaExport 未强制执行唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com