UUID 与 Play 框架
我想使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先不要在要生成 Id 的模型中扩展 (play.db.jpa.Model) 模型,而是使用 GenericModel。
那么您可以使用在创建对象时调用的辅助类(在构造函数中)。
或者在保存时调用帮助器类(因此我必须创建包装器 DAO,保存过程是在包装器 DAO 中而不是在对象中完成,以便我可以生成保存对象的 id),
或者如果您想要更简单的方法,请使用 JPA UUID。请参阅下面的代码。
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.
嗯,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.