0

JavaエンタープライズアプリにSQLサーバー2008R2を使用しています。ここで、Bean を永続化している間、その Id 列が自動的に更新されるようにしたいと考えています。私のエンティティBeanは次のとおりです。

@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
4

1 に答える 1

0

プロパティに追加@NotNullしましたid。したがって、これは、JPA が永続化する前にこの ID が null でないことを確認することを意味します。ただし、id は後でデータベースによって生成されるため、null です。したがって、NotNull 注釈は、ID によって自動生成されるという事実と真っ向から矛盾しています。

@NotNullから注釈を削除するだけidです。

于 2014-01-27T11:17:27.580 に答える