使用hibernate注释自动增量和用户定义的id

时间:2013-03-18 06:07:57

标签: hibernate auto-increment

我可以使用hibernate注释为同一字段设置自动增量和用户设置ID吗?

E.G: 如果用户输入ID,请使用给定的ID

-OR -

如果用户没有输入任何内容,Hibernate应该自己创建ID。

我会对任何建议表示感谢。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

答案 1 :(得分:1)

由于你被绑定到Hibernate,你可以使用自定义id生成器。假设你有以下id字段,如果用户提供你想要id,否则它会自动生成。

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="CustomIdGenerator")
@GenericGenerator(name="CustomIdGenerator ",
                  strategy="xx.yy.zz.CustomIdGenerator"
)
private Integer id;

这是自定义生成器,如果没有提供,将生成id。

import org.hibernate.id.IdentityGenerator;
...
public class CustomIdGenerator extends IdentityGenerator {


@Override
public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {

    if ((((yourEntity) obj).getId()) == null) {
        Serializable id = super.generate(session, obj) ;
        return id;
    } else {
        return ((yourEntity) obj).getId();

    }
}