Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何为不重复的DB实体生成默认名称?_Hibernate_Grails - Fatal编程技术网

Hibernate 如何为不重复的DB实体生成默认名称?

Hibernate 如何为不重复的DB实体生成默认名称?,hibernate,grails,Hibernate,Grails,我需要为数据库实体的新实例生成唯一名称 现在,一个看起来似乎很好的解决方案的选项是给出一个名称,如“Unnamed EntityX-ID”,其中ID是实例的ID。这种方法的问题是我们事先不知道ID 另一个选项是保存两次,一次使用无效名称,如“Unnamed EntityX-RANDOM_NUMBER;%;”然后使用名称“Unnamed EntityX-ID”再次保存。 这种方法有两个问题: 保存两次似乎不正确 即使是临时的,用不正确的名称保存似乎也是不正确的 第三个选项是使用“Unnamed E

我需要为数据库实体的新实例生成唯一名称

现在,一个看起来似乎很好的解决方案的选项是给出一个名称,如“Unnamed EntityX-ID”,其中ID是实例的ID。这种方法的问题是我们事先不知道ID

另一个选项是保存两次,一次使用无效名称,如“Unnamed EntityX-RANDOM_NUMBER;%;”然后使用名称“Unnamed EntityX-ID”再次保存。 这种方法有两个问题:

  • 保存两次似乎不正确
  • 即使是临时的,用不正确的名称保存似乎也是不正确的
  • 第三个选项是使用“Unnamed EntityX-RANDOM_NUMBER”保存,如果是重复的,请尝试上面的第二个选项

    在这种情况下,最佳做法(或常见做法)是什么?我觉得第二种方法是最好的选择


    详细信息:我正在使用Grails2.4.4生成本机ID。

    最简单的方法是生成一个唯一标识符并使用它

    UUID.randomUUID().toString()
    

    你为什么要保存数字部分呢?只需将实体中的实用程序getter中的名称与id连接起来。具有唯一名称的意义是什么。在您的情况下,ID应该满足您的要求,这已经是唯一的。@DraganBozanovic每个实体实例都必须具有唯一的名称,以便用户查看!对于新实体实例,ID不可用,但仍必须使用唯一名称将其保存到DB。为此,您只需创建一个临时变量“name”,并重写其getter以返回“Unnamed EntityX-ID”。