10

要するに、私の質問は、SpringデータJPAを使用して(nullではなく)事前設定された主キーでエンティティを保存する方法です。

説明するために、という名前の単純なエンティティクラスについて考えてみCustomerます。idは自動インクリメントに設定されておらず、カスタムの一意の値である必要があることに注意してください。これはほんの一例です。実際のテーブルのIDは、ユーザー名のようなカスタムの一意のIDである必要があります。

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

    @Id
    @Basic(optional = false)
    @Column(name = "cust_id", nullable = false)
    private Integer custId;

    @Column(name = "first_name", length = 30)
    private String firstName;

    @Column(name = "last_name", length = 30)
    private String lastName;

    //getter, setters 
}

そして、私CustomerRepository

@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> {
}

ここで、ID101の新しい顧客レコードを挿入する必要があると思います。予想される方法は次のとおりです。

Customer customer = new Customer();
customer.setCustId(101);
customer.setFirstName("Some");
customer.setLastName("Name");

repository.save(customer);

しかし、repository.save()ID 101の新しい顧客が挿入されないことがあります。では、これをどのように行う必要がありますか?

4

1 に答える 1

8

アクティブなトランザクションを実行している場合は、データベースを個別にチェックして変更が行われたことを確認する前に、常に明示的にフラッシュを呼び出すか、トランザクションがコミットされていることを確認してください。

于 2013-02-03T22:33:34.693 に答える