【问题标题】:UUID with the Play Framework使用 Play 框架的 UUID
【发布时间】:2011-09-13 14:56:12
【问题描述】:

我想使用 UUID 而不是常规的 id 我的模型。

用play框架可以做到吗?

【问题讨论】:

    标签: playframework uuid


    【解决方案1】:

    首先不要在要生成Id但使用GenericModel的模型中扩展(play.db.jpa.Model)模型。

    那么你可以使用创建对象时调用的辅助类(在构造函数中)。

    或在保存时调用帮助类(因此我必须创建包装器 DAO,保存过程是在包装器 DAO 中完成的,而不是在对象中,以便我可以生成 id 来保存对象)

    或者如果您想要更简单的方法,请使用 JPA UUID。请参阅下面的代码。

    @Entity
    public class User extends GenericModel {
        @Id
        @GeneratedValue(generator = "system-uuid")
        @GenericGenerator(name = "system-uuid", strategy = "uuid")
        public String id;
    }
    

    【讨论】:

    • GenericModel:不是反模式吗?请看:en.wikipedia.org/wiki/BaseBean
    • 查看 wiki 上的评论以及 wiki 的中立性说“这篇文章的中立性是有争议的”,所谓的这种反模式是不恰当的。
    【解决方案2】:

    嗯,Model 类只是 GenericModel 的一个子类,它添加了属性、方法和注释,以提供生成的 Long 作为模型类的 @Id 属性。

    如果您不希望这样,您可以改为继承 GenericModel 并提供您自己的 @Id。在您的情况下,这将是一个保存 UUID 的字符串。不过,您需要想出一个在新模型实例上初始化它的策略。

    我不知道 JPA 提供的用于生成 UUID 的内置策略。一个简单的方法是拥有一个帮助类,您可以调用一个方法来获取新的 UUID,并确保每次创建新模型时都调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多