gpt4 book ai didi

java - Hibernate:手动调用 SequenceGenerator?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:20 25 4
gpt4 key购买 nike

我已经编写了自己的 IdGenerator:

public class AkteIdGenerator implements IdentifierGenerator {
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
// if custom id is set -> use this id
if (object instanceof SomeBean) {
SomeBean someBean = (SomeBean) object;
Long customId = someBean.getCustomId();
if (customId != 0) {
return customId;
}
}
// otherwise --> call the SequenceGenerator manually
SequenceStyleGenerator sequenceGenerator ...
}
}

有谁知道我如何从我的生成器类调用 sequenceGenerator,我通常可以根据注释定义:

@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "MY_SEQUENCE")
@SequenceGenerator(
allocationSize = 1,
name = "MY_SEQUENCE",
sequenceName = "MY_SEQUENCE_NAME")

我将非常感谢任何解决方案!!!!

非常感谢,诺伯特

最佳答案

您可以轻松地从您的生成器类中调用 SequenceGenerator。通过编写这段代码。自定义生成器类应该是

 public class StudentNoGenerator implements IdentifierGenerator {

public Serializable generate(SessionImplementor session, Object object)throws HibernateException {

SequenceGenerator generator=new SequenceGenerator();
Properties properties=new Properties();
properties.put("sequence","Stud_NoSequence");
generator.configure(Hibernate.STRING, properties, session.getFactory().getDialect());
return generator.generate(session, session);

}


在上面的代码中,Stud_NoSequence 是应该创建的序列名称。在数据库中通过拧 create sequence Stud_NoSequence;Hibernate.String 是 SequenceGenerator 类将返回的类型。

领域类将是

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@org.hibernate.annotations.GenericGenerator(
name = "Custom-generator",
strategy = "com.ssis.id.StudentNoGenerator"
)
public class Student {
@Id @GeneratedValue(generator = "Custom-generator")
String rno;
@Column
String name;
public String getRno() {
return rno;
}
public void setRno(String rno) {
this.rno = rno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

关于java - Hibernate:手动调用 SequenceGenerator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com