2017-09-16 36 views
4

我正在使用MySQL数据库。Spring数据JPA只有一个复合键自动递增

我的表是一个员工,其中有两个主键,其中一个是自动递增的。

我的代码是:

@Embeddable 
    public class EmployeeId implements Serializable { 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 
     @Column(name = "id", nullable = false)// this i want to increment 
     private int id; 
     // I have tried and @GeneratedValue(strategy = GenerationType.IDENTITY), 
     //@GeneratedValue(strategy = GenerationType.IDENTITY) 
     //and @GeneratedValue(strategy = GenerationType.TABLE) 
     //@GeneratedValue(strategy = GenerationType.AUTO, generator = "id") @SequenceGenerator(name = "id", sequenceName = "id") 

     @Column(name = "gender_key", nullable = false) 
     private id gender_key; 

     } 



     @Entity 
     @Table(name = "employee") 
     public class employee { 
     @EmbeddedId 
     private EmployeeId employeeId; 

     private String emp_name; 
     private String mobile_no; 

     employee() { 
     }} 



     public interface employeeRepository extends 
      JpaRepository<employee, EmployeeId> { 
     } 

在我的控制器我想以后employeeRepository.save(豆)ID;方法,因为我想将该ID保存在不同的表中。

logger.info(“id is --->”+ id);

但我总是得到0的id值。

如何获取插入到MySQL表中的id的增量值?

请帮忙。

在此先感谢。

回答

0

您是试图从原始对象中获取值还是从save方法返回对象?假设您有以下代码:

employeeRepository.save(bean) 
int id = bean.getId(); 
logger.info("id is --- > "+id); 

这确实会返回零,因为您的对象没有此信息。如果你想这是对数据库产生的价值,你必须做到以下几点:

bean = employeeRepository.save(bean) 
int id = bean.getId(); 
logger.info("id is --- > "+id); 
+0

我已经试过您的解决方案,但ID仍然我得到值为0 –

+0

在表中的ID是PK和是自动增量我当时无法获得id值。和其他组合键,如不是自动递增的用户名,成员键我能够使用这个获得这个组合键的值 bean = employeeRepository.save(bean ) int username = bean.getUsername(); logger.info(“username is --->”+ username); 但不能获得ID的价值 –