Spring Data JPA - 使用自定义ID /主键保存新实体

Jom*_*oos 7 java spring spring-data-jpa

简而言之,我的问题是如何使用Spring数据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 
}
Run Code Online (Sandbox Code Playgroud)

而且,我有CustomerRepository作为

@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> {
}
Run Code Online (Sandbox Code Playgroud)

现在,我想我必须插入一个id为101的新客户记录.预期的方法是:

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

repository.save(customer);
Run Code Online (Sandbox Code Playgroud)

但是,它repository.save()不会插入ID为101的新客户.那么,我该怎么做呢?

rob*_*lco 6

如果您处于活动事务中,请始终记住显式调用flush或确保事务已提交,然后单独检查数据库以确保已进行更改.

  • 还有方便的`saveAndFlush()`方法. (3认同)