Hibernate:如何使用注释指定自定义序列生成器类名称? [英] Hibernate: How specify custom sequence generator class name using annotations?
问题描述
我想使用注释来指定以下hbm配置:
I want to specify following hbm configuration using annotations:
<id name="somePK" column=""somePK"" type="long">
<generator class="com.db.hibernate.KeyGenerator"/>
</id>
我不确定如何提供类名称
I am not sure how to provide class name with
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STORE")
是否必须在每个实体类中指定 @ javax.persistence.SequenceGenerator
?
我可以在 @GeneratedValue
注释下指定类名吗?
Do I have to specify @javax.persistence.SequenceGenerator
in each entity class?
Can I specify just the class name under @GeneratedValue
annotation?
推荐答案
please find below set of code which i have used in project for the same.
请在下面找到我在项目中使用过的代码集。
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator =XyzIdGenerator)
@GenericGenerator(name =XyzIdGenerator,
strategy =com.mycompany.myapp.id.BigIntegerSequenceGenerator,
参数= {
@Parameter(name =sequence,value =xyz_id_sequence)
})
public BigInteger getId()
{
返回ID;
}
package com.mycompany.myapp.id;
import org.hibernate.id.SequenceGenerator;
...
public class BigIntegerSequenceGenerator
extends SequenceGenerator
{
@Override
public Serializable generate(SessionImplementor session,Object obj)
{
...
}
}
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator")
@GenericGenerator(name = "XyzIdGenerator",
strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator",
parameters = {
@Parameter(name = "sequence", value = "xyz_id_sequence")
})
public BigInteger getId()
{
return id;
}
package com.mycompany.myapp.id;
import org.hibernate.id.SequenceGenerator;
...
public class BigIntegerSequenceGenerator
extends SequenceGenerator
{
@Override
public Serializable generate(SessionImplementor session, Object obj)
{
...
}
}
这篇关于Hibernate:如何使用注释指定自定义序列生成器类名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!