它可以通过以下代码在我的项目中运行:
@XmlAttribute@Id@Basic(optional = false)@GeneratedValue(strategy=GenerationType.IDENTITY, generator="IdOrGenerated")@GenericGenerator(name="IdOrGenerated", strategy="....UseIdOrGenerate")@Column(name = "ID", nullable = false)private Integer id;
和
import org.hibernate.id.IdentityGenerator;...public class UseIdOrGenerate extends IdentityGenerator {private static final Logger log = Logger.getLogger(UseIdOrGenerate.class.getName());@Overridepublic Serializable generate(SessionImplementor session, Object obj) throws HibernateException { if (obj == null) throw new HibernateException(new NullPointerException()) ; if ((((EntityWithId) obj).getId()) == null) { Serializable id = super.generate(session, obj) ; return id; } else { return ((EntityWithId) obj).getId(); }}在这里,你基本上定义了自己的ID生成器(基于Identity策略),如果未设置ID,则将生成委托给默认生成器。
主要缺点是它将你绑定为JPA提供程序的Hibernate …但是它与我的MySQL项目完美配合



