我有一个实体 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"/>