Spring数据JPA只有一个复合键自动递增

时间:2017-09-16 13:04:27

标签: mysql hibernate spring-boot spring-data spring-data-jpa

我正在使用MySQL数据库。

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

我的代码是:

@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(bean)之后使用id;方法因为我想将该id保存在不同的表中。

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

但我总是得到0的id值。

如何获取插入MySQL表的id的递增值?

请帮助。

提前致谢。

1 个答案:

答案 0 :(得分: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);