ebean 中的约束 java 播放框架未反映在生成的 sql 中
Constraints in ebean java play framework not reflected in generated sql
我在基于 java 的游戏框架中使用 ebean ORM,以下是我的模型
package models;
import java.util.*;
import javax.persistence.*;
import com.avaje.ebean.annotation.CreatedTimestamp;
import com.avaje.ebean.annotation.UpdatedTimestamp;
import play.db.ebean.*;
import play.data.validation.*;
@Entity
@Table(name = "coupons")
public class Coupon extends com.avaje.ebean.Model {
private static final long serialVersionUID = 1L;
@Id
private Long id;
@Constraints.Required
@Constraints.MaxLength(80)
@Constraints.MinLength(10)
private String title;
@Constraints.Required
@Constraints.MaxLength(1000)
@Constraints.MinLength(10)
private String description;
@Column(name = "created_at")
@CreatedTimestamp
private Date createdAt;
@Column(name = "updated_at")
@UpdatedTimestamp
private Date updatedAt;
@Column(name = "valid_from")
private Date validFrom = new Date();
@Column(name = "valid_to")
private Date validTo = new Date((long)2147483647*1000);
}
生成的 sql 文件是
create table coupons (
id bigserial not null,
title varchar(255),
description varchar(255),
valid_from timestamp,
valid_to timestamp,
created_at timestamp not null,
updated_at timestamp not null,
constraint pk_coupons primary key (id)
);
drop table if exists coupons cascade;
ebean 是否将约束转换为 sql 文件?我如何确保我的约束也反映在 sql 文件中?
Ebean 不读取任何 Play 约束注释。
@Constraints.Required
@Constraints.MaxLength(80)
因此 Required
和 MaxLength
未被读取,因此不会影响生成的 DDL。
Ebean 读取 JPA 注释和 javax.validation.constraints
注释 @NotNull
和 @Size
。例如,您可以使用:
@NotNull
@Size(max = 80)
Ebean 仅使用 JPA Annotations。
您可以查看 @Column 注释的文档,其中包含
等选项
@Column(nullable = false)
但是,没有最小或最大字符串长度选项,也没有确保字符串不为空的选项。
我在基于 java 的游戏框架中使用 ebean ORM,以下是我的模型
package models;
import java.util.*;
import javax.persistence.*;
import com.avaje.ebean.annotation.CreatedTimestamp;
import com.avaje.ebean.annotation.UpdatedTimestamp;
import play.db.ebean.*;
import play.data.validation.*;
@Entity
@Table(name = "coupons")
public class Coupon extends com.avaje.ebean.Model {
private static final long serialVersionUID = 1L;
@Id
private Long id;
@Constraints.Required
@Constraints.MaxLength(80)
@Constraints.MinLength(10)
private String title;
@Constraints.Required
@Constraints.MaxLength(1000)
@Constraints.MinLength(10)
private String description;
@Column(name = "created_at")
@CreatedTimestamp
private Date createdAt;
@Column(name = "updated_at")
@UpdatedTimestamp
private Date updatedAt;
@Column(name = "valid_from")
private Date validFrom = new Date();
@Column(name = "valid_to")
private Date validTo = new Date((long)2147483647*1000);
}
生成的 sql 文件是
create table coupons (
id bigserial not null,
title varchar(255),
description varchar(255),
valid_from timestamp,
valid_to timestamp,
created_at timestamp not null,
updated_at timestamp not null,
constraint pk_coupons primary key (id)
);
drop table if exists coupons cascade;
ebean 是否将约束转换为 sql 文件?我如何确保我的约束也反映在 sql 文件中?
Ebean 不读取任何 Play 约束注释。
@Constraints.Required
@Constraints.MaxLength(80)
因此 Required
和 MaxLength
未被读取,因此不会影响生成的 DDL。
Ebean 读取 JPA 注释和 javax.validation.constraints
注释 @NotNull
和 @Size
。例如,您可以使用:
@NotNull
@Size(max = 80)
Ebean 仅使用 JPA Annotations。
您可以查看 @Column 注释的文档,其中包含
等选项@Column(nullable = false)
但是,没有最小或最大字符串长度选项,也没有确保字符串不为空的选项。