我有一个实体bean,其id字段声明为 GenerationType.AUTO ,以便自动生成ID:
@Entity
public class CustomerPool implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
//setters getters
}
但我需要确保插入的第一个CustomerPool的ID为0。
我认为设置id为0的CustomerPool优先于指令而不是我有不同的行为(使用JPA而不是EclipseLink),但大多数我设置的ID都会被忽略。
如果没有指明,可以将ID设置为自动生成,否则使用指定的ID(如果指示)? 不知何故,我习惯于在PHP中这样做,对我来说似乎很自然。
答案 0 :(得分:0)
EclipseLink默认验证主键并将0解释为Null和unset值,因此将生成主键值。因此,您可以设置它们使用的值,默认情况下它们必须大于0。这可以通过主键验证策略进行配置,如下所述: http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_primarykey.htm
如果0是有效的主键,您可以设置属性:
<property name="eclipselink.id-validation" value="NULL"/>