Автоматическое увеличение с использованием @ Generated

Я использую SQL Server 2008R2 для моего приложения Java Enterprise. Теперь я хочу, чтобы при сохранении компонента его столбец Id автоматически обновлялся. Мой бин сущности:

@Entity
@Table(name = "BANK_MASTER")
@XmlRootElement
public class BankMaster implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id    
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Basic(optional = false)
    @NotNull
    @Column(name = "BANK_ID")
    private Long bankId;

    @Size(max = 30)
    @Column(name = "BANK_NAME")
    private String bankName;

    @Size(max = 25)
    @Column(name = "IP_ADDRESS")
    private String ipAddress;

    @Size(max = 255)
    @Column(name = "URL")
    private String url;

    @Size(max = 1)
    @Column(name = "FORM_METHOD")
    private String formMethod;

    @Size(max = 1)
    @Column(name = "SECURED")
    private String secured;

    @Column(name = "ACTIVEFLAG")
    private Short activeflag;

    @Column(name = "ENABLED")
    private Short enabled;

    @OneToMany(mappedBy = "bankId")
    private Collection<BankBranchMaster> bankBranchMasterCollection;

    @JoinColumn(name = "PARTNER_ID", referencedColumnName = "UA_ID")
    @ManyToOne
    private PartnerAccount partnerId;
}

Однако, когда я сохраняю bean-компонент, он выдает ошибку ограничения. Моя таблица создания запроса выглядит следующим образом:

    CREATE TABLE [dbo].[BANK_MASTER](
[BANK_ID] [numeric](10, 0) IDENTITY(105,1) NOT NULL,
[BANK_NAME] [varchar](30) NULL,
[IP_ADDRESS] [varchar](25) NULL,
[URL] [varchar](255) NULL,
[FORM_METHOD] [varchar](1) NULL,
[SECURED] [varchar](1) NULL,
[PARTNER_ID] [numeric](10, 0) NULL,
[ACTIVEFLAG] [numeric](1, 0) NULL,
[ENABLED] [numeric](1, 0) NULL

1 ответ

Решение

Вы добавили @NotNull к id имущество. Таким образом, это означает, что JPA проверит, что этот идентификатор не равен NULL, перед сохранением. Но идентификатор равен нулю, так как он будет сгенерирован после базы данных. Таким образом, аннотация NotNull находится в прямом противоречии с тем фактом, что она автоматически генерируется идентичностью.

Просто удалите @NotNull аннотация от id,

Другие вопросы по тегам