为Play Framework 2.3x生成基于UUID的@ID

时间:2015-04-07 14:01:30

标签: java playframework-2.3

美好的一天伙计们,

我想创建不使用Playframework和Ebeans的默认@Id自动生成的模型。我在网上看到有使用GenericModel的选项,但是这个类似乎不包含在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]]]的Model对象时,它当前给我提出了问题。

请提供任何帮助。

1 个答案:

答案 0 :(得分:1)

美好的一天伙计们,

我最后通过使用JDK附带的UUID类修复了这个问题。因此,在创建模型时,可以使用

创建模型
@Id  
public java.util.UUID id

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