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)

因此 RequiredMaxLength 未被读取,因此不会影响生成的 DDL。

Ebean 读取 JPA 注释和 javax.validation.constraints 注释 @NotNull@Size。例如,您可以使用:

@NotNull
@Size(max = 80)

Ebean 仅使用 JPA Annotations

您可以查看 @Column 注释的文档,其中包含

等选项
@Column(nullable = false)

但是,没有最小或最大字符串长度选项,也没有确保字符串不为空的选项。