我在基于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文件中?
答案 0 :(得分:0)
Ebean不读取任何Play约束注释。
@Constraints.Required
@Constraints.MaxLength(80)
因此,Required
和MaxLength
未被读取,因此不会影响生成的DDL。
Ebean读取JPA注释和javax.validation.constraints
注释@NotNull
和@Size
。例如,您可以使用:
@NotNull
@Size(max = 80)
答案 1 :(得分:0)
Ebean仅使用JPA Annotations。
您可以签出@Column批注的文档,该批注具有诸如
@Column(nullable = false)
但是,没有最小或最大字符串长度或确保字符串不为空的选项。