简而言之,我的问题是如何使用Spring Data JPA保存具有预设主键(而不是null)的实体。
为了解释这个问题,考虑一个简单的实体类Customer
。请注意,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> {
}
现在,我想插入一个新的客户记录,id为101。预期的方式是:
Customer customer = new Customer();
customer.setCustId(101);
customer.setFirstName("Some");
customer.setLastName("Name");
repository.save(customer);
但是,有时候repository.save()
无法插入ID为101的新客户。那么,我该怎么做呢?
flush()
后它可以工作了。 - Jomoos