Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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中使用Java生成的UUID?_Java_Hibernate_Kotlin_Uuid - Fatal编程技术网

在Hibernate中使用Java生成的UUID?

在Hibernate中使用Java生成的UUID?,java,hibernate,kotlin,uuid,Java,Hibernate,Kotlin,Uuid,我知道你可以 但是在编写Kotlin时,在代码本身中生成它们似乎要干净得多。这样,您就不需要占位符值,并且id可以是非空值: @Id val id: String = UUID.randomUUID().toString() 但我想知道,这有什么我没有想到的错误吗?看起来如果它是UUID,那么谁会在乎它是由应用程序生成的还是由Hibernate本身生成的呢 我不确定,但在反序列化时,可能已经设置了id,如果您想在数据库中创建一个新条目并且已经分配了id,这可能是一个问题。我想到

我知道你可以

但是在编写Kotlin时,在代码本身中生成它们似乎要干净得多。这样,您就不需要占位符值,并且id可以是非空值:

    @Id
    val id: String = UUID.randomUUID().toString()

但我想知道,这有什么我没有想到的错误吗?看起来如果它是UUID,那么谁会在乎它是由应用程序生成的还是由Hibernate本身生成的呢

我不确定,但在反序列化时,可能已经设置了id,如果您想在数据库中创建一个新条目并且已经分配了id,这可能是一个问题。我想到的一件事是hibernate在获取期间将使用db中的id,而构造函数中生成的id将被忽略,但无论如何都会生成(浪费cpu和内存来生成它)。在这种情况下,如果字段上有
lateinit var
,您仍然可以使用非空字段。您还应该能够执行
id:UUID=UUID.randomUUID()
没有严格键入field@krzychek所以hibernate创建对象,然后通过反射从结果集中设置其值?我原以为它会使用构造函数从结果集中设置值,但我想不会。无论如何,这是一个很小的性能考虑,我可能只会考虑这个,我想读得更多就我所知,Kotlin jpa插件为带有hibernate/jpa注释的类生成合成默认构造函数。hibernate应该使用这个默认构造函数并通过反射设置属性,就像在clean java中一样。