JPA GenerationType.AUTO并手动设置字段

时间:2014-01-09 11:17:56

标签: java jpa eclipselink

我有一个实体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中这样做,对我来说似乎很自然。

1 个答案:

答案 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"/>