Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/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
Java 为什么@SequenceGenerator有名字?_Java_Hibernate - Fatal编程技术网

Java 为什么@SequenceGenerator有名字?

Java 为什么@SequenceGenerator有名字?,java,hibernate,Java,Hibernate,javadoc说 可以使用的唯一生成器名称 被一个或多个类引用到 是主键的生成器 价值观 但是它的注释放在@Entity的上面,所以我不理解其中的原因 我可以在其他@Entity中定义的@Entity@SequenceGenerator中使用吗?这个想法是多个实体可能想要共享一个密钥空间 例如,如果您有两个实体Foo和Bar,则您希望避免同时拥有id为1的Foo和id为1的Bar。您可以通过为它们的@SequenceGenerator注释指定相同的名称来实现这一点。其思想是多个实体可能希望共享一

javadoc说

可以使用的唯一生成器名称 被一个或多个类引用到 是主键的生成器 价值观

但是它的注释放在@Entity的上面,所以我不理解其中的原因


我可以在其他@Entity中定义的@Entity@SequenceGenerator中使用吗?

这个想法是多个实体可能想要共享一个密钥空间


例如,如果您有两个实体
Foo
Bar
,则您希望避免同时拥有id为1的
Foo
和id为1的
Bar
。您可以通过为它们的
@SequenceGenerator
注释指定相同的
名称来实现这一点。

其思想是多个实体可能希望共享一个密钥空间


例如,如果您有两个实体
Foo
Bar
,则您希望避免同时拥有id为1的
Foo
和id为1的
Bar
。您可以为它们的
@SequenceGenerator
注释指定相同的
名称

在@GeneratedValue注释中使用generator时,请按名称引用它。这就是为什么使用这个名字。序列生成器可以在GeneratedValue注释中声明,但他们决定不这样做。它使您可以在多个字段上使用相同的生成器,甚至在实体之间共享它们。当您不使用此功能时,当然会有一些开销。

在@GeneratedValue注释中使用generator时,请按名称引用它。这就是为什么使用这个名字。序列生成器可以在GeneratedValue注释中声明,但他们决定不这样做。它使您可以在多个字段上使用相同的生成器,甚至在实体之间共享它们。当您不使用此功能时,当然会有一些开销。

您所说的密钥空间是什么意思?你能给出一个代码示例吗?你是说一个类中有两个@enitite?不是。我的意思是键的范围由两个单独的实体共享。也就是说,如果
A
类型的实体具有键值
1
,那么
B
类型的实体将永远不会使用该键值。那么您是说@entity中有两个字段?否!我说的是两个独立的类,每个类都有一个
@Entity
注释和一个
@SequenceGenerator
注释。那么为什么需要一个名称呢?您可以创建“匿名”SequenceGenerator,并使用它而不指定名称。作为密钥空间,您指的是Java包吗?密钥空间是什么意思?你能给出一个代码示例吗?你是说一个类中有两个@enitite?不是。我的意思是键的范围由两个单独的实体共享。也就是说,如果
A
类型的实体具有键值
1
,那么
B
类型的实体将永远不会使用该键值。那么您是说@entity中有两个字段?否!我说的是两个独立的类,每个类都有一个
@Entity
注释和一个
@SequenceGenerator
注释。那么为什么需要一个名称呢?您可以创建“匿名”SequenceGenerator,并使用它而不指定名称。作为键空间,你是指Java包吗?我刚刚看到在一些项目中,每个@Entity都有注释@SequenceGenerator(name=“seq”,sequenceName=“seq_TABLE”,allocationSize=1)-名称总是相同的,不会泄漏给其他@Enities。我刚刚看到在一些项目中,每个@Entity都有注释@SequenceGenerator(name=“seq”,sequenceName=“SEQ_TABLE”,allocationSize=1)-名称始终相同,不会泄漏给其他@Enities。