JPA GenerationType.AUTO 并手动设置字段



我有一个实体 bean,它有一个 id int 字段声明为 GenerationType.AUTO,以便自动生成 ID:

@Entity
public class CustomerPool implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    //setters getters
}

但是,我需要确保插入的第一个客户池的 ID 为 0。

我认为设置一个 id 为 0 的客户池会优先于指令,相反,我有不同的行为(在 EclipseLink 上使用 JPA),但大多数情况下我设置的 ID 被忽略了。

那么,是否可以将ID设置为自动生成(如果未另行指示)以使用指定的ID(如果指示)?不知何故,我习惯于在PHP中这样做,对我来说似乎是很自然的行为。

默认情况下,EclipseLink 验证主键并将 0 解释为 Null 和未设置值,因此将生成主键值。 因此,您可以设置使用它们的值,默认情况下它们必须大于 0。 这可以通过主键验证策略进行配置,如下所述:http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_primarykey.htm

如果 0 是有效的主键,则可以设置该属性:

<property name="eclipselink.id-validation" value="NULL"/>

最新更新