Mar*_*ada 2 java orm hibernate
我不确定为什么我的实体类不会创建我需要的表模式
@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
}
Run Code Online (Sandbox Code Playgroud)
当我使用Schema导出时.
new SchemaExport(config).create(true, true);
Run Code Online (Sandbox Code Playgroud)
它创建此SQL,但它不会向我的login_name字段添加任何唯一约束.
drop table User
create table User (id bigint generated by default as identity, login_name varchar(255)primary key (id))
Run Code Online (Sandbox Code Playgroud)
我正在使用Apache Derby,我检查了Derby的参考手册,它确实支持列上的Unique约束.我尝试在类上添加uniqueconstraint注释,但结果是一样的.
任何的想法?
问题是Derby扩展了DB2 Dialect,它将"supportsNotNullUnique"指定为"false".因此,解决方案是创建自定义Derby方言并更改此方法以返回"true",或将字段标记为nullable = false.
@Column(name = "login_name", unique = true, nullable=false)
Run Code Online (Sandbox Code Playgroud)
要么
import org.hibernate.dialect.DerbyDialect;
public class CustomDerbyDialect extends DerbyDialect {
public boolean supportsNotNullUnique() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |