为 Playframework 2.3x 生成基于 UUID 的@ID

Generating UUID based @ID for Playframework 2.3x

大家好,

我想为 Playframework 和 Ebeans 创建不使用默认 @Id 自动生成的模型。我在网上看到有使用 GenericModel 的选项,但是 class 似乎没有包含在 2.3x 版本中。我这样做是为了解决这个问题,但我仍然没有达到我的目标

public class ProductVariants extends Model  
{  
    @Id
    String id; 
    public String getId() {
        return (this.id == null) ? UUID.randomUUID().toString()  : this.id;
    }

    public void setId(String id) {
        this.id = id;
    } 
}

问题是我必须手动设置 ID 才能保存对象,例如

productVariant.setId(productVariant.getId());
productVariant.save();

对于主要模型及其所有具有 OneToMany 关系的相关模型,当我从视图绑定到模型对象时出现错误 ERROR executing DML bindLog[] error[Field 'id' doesn't have a default value]]]

如有任何帮助,我们将不胜感激。

大家好,

我最终使用 JDK 附带的 UUID class 解决了这个问题。因此,当您创建模型时,您使用

创建它们
@Id  
public java.util.UUID id

同样在路由文件中,如果您需要通过 ID 映射到记录,您可以通过执行类似的操作来做到这一点
GET /:pid/edit controllers.Application.edit(pid: java.util.UUID)