3

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

EG:如果用户输入ID,则使用给定的ID

-或者-

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

我会很感激任何建议。

4

2 回答 2

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();

    }
}
于 2013-03-18T08:26:30.600 回答
1

我想你正在寻找这个

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
于 2013-03-18T08:18:08.113 回答