UUID 与 Play 框架

发布于 2024-12-04 03:45:16 字数 56 浏览 0 评论 0原文

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

这个可以用play框架来完成吗?

I'd like to use UUID instead of the regular id on
my models.

Can this be done with the play framework?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

女皇必胜 2024-12-11 03:45:16

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

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

或者在保存时调用帮助器类(因此我必须创建包装器 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;
}

First don`t extend (play.db.jpa.Model) Model in the Model you want to generate the Id but use GenericModel.

then you could use helper class that called when object is created (in constructor).

or call the helper class when saved(thus i have to create wrapper DAO, the save process is done in wrapper DAO not in the Object so that i could generate id the save the object)

or if you want more simple approach use JPA UUID. See code below.

@Entity
public class User extends GenericModel {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    public String id;
}
吻泪 2024-12-11 03:45:16

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

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

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

Well, the Model class is just a sub-class of GenericModel which adds the attribute, methods and annotations to provide a generated Long as the @Id property for your model classes.

If you don't want that, you can subclass GenericModel instead and provide your own @Id. In your case that would be a String to hold the UUID. You'll need to come up with a strategy for initialising it on new model instances, though.

I'm not aware of a built-in strategy provided by JPA to generate UUIDs. A simple method would be to have a helper class that you can call a method on to get a new UUID and make sure you call that every time you create a new model.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文