Can not get database generated value after saving

Viewed 2155

I'm using SpringBoot, Spring data and postgresql.

In postgres I created one table.

CREATE EXTENSION "uuid-ossp";
CREATE TABLE user (
    id serial PRIMARY KEY not null,          
    user_id varchar(255) not null default uuid_generate_v4()
);   

Than create entity

@Entity
public class User implements Serializable {

  private static final long serialVersionUID = 9129894781337596497L;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(columnDefinition = "serial")
  private Integer id;

  @Column(insertable = false)
  private String userId;

  public static User create(){
    User user = new User();
    return user;
  }

  public String getUserId(){
    return userId;
  }

}

Than create jpa repository like this

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {}

When I save the user I need to get id and userId but I get null instead and in database is generated UUID.

User user = userRepository.save(User.create());
assertThat(user.getUserId()).isNotNull();

How can I get those generated values from database?

2 Answers
Related