4

Entity Class と Entity Manager を使用して、データベース (MySQL) にレコードを挿入しようとしています。ただし、フィールドの 1 つは自動インクリメントの主キーであるため、手動で値を指定しない限り、挿入は成功しません。

public boolean newContributor(String name, String email, String country, Integer contactable, String address) {
        Contributors contributor = new Contributors(); //entity class
        contributor.setId(??????); //this is Primary Key field and is of int datatype
        contributor.setName(name);
        contributor.setEmail(email);
        contributor.setCountry(country);    
        contributor.setContactable(contactable);
        contributor.setAddress(address);

        em.persist(contributor);
        return true;
    }

そのような問題を解決する方法は?ID フィールドなしで挿入を試み、NULL代わりに値を使用するようにエンティティ マネージャに指示する方法はありますか。

更新:これは、エンティティ クラスを定義する部分です。id

...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
....
4

1 に答える 1

1

ID フィールドなしで挿入を試み、代わりに NULL 値を使用するようにエンティティ マネージャに指示する方法はありますか?

もちろん。定義内のフィールドの@NotNull注釈を削除し、行も削除する必要があります。id@Entity

contributor.setId(??????);

からの方法newContributor()。これは、@NotNullアノテーションが JPA スタックで検証チェックを実施するためです。フィールドがデータベース レベルで NOT NULL であることを意味するわけではありません。この問題に関する議論はこちらを参照してください。

コードの残りの部分は正常に見えます。

于 2012-05-18T08:23:40.473 に答える