TransientObjectException during saving JWT into table "RefreshToken"

30 Views Asked by At

Hello,

I am creating spring boot webservice for user-role system with JWT, user-role working fine but when i am trying to login and save token in table 'Refresh Token' it throw error:-

"org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.model.Role at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible"

thanks in advance.

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Table(name = "REFRESH_TOKENS")
public class RefreshToken {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String token;

    private Instant expiryDate;
    @OneToOne
    @JoinColumn(name = "user_id", referencedColumnName = "user_id")
    private User userInfo;

}
@Data
@Entity
@Table(name = "user")
public class User {
    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @NotEmpty(message = "username cannot be empty")
    @Column(unique = true)
    private String username;
    @NotEmpty(message = "password cannot be empty")
    private String password;
    private boolean enabled;
    @NotEmpty(message = "firstName cannot be empty")
    private String firstName;
    @NotEmpty(message = "lastName cannot be empty")
    private String lastName;
    @NotEmpty(message = "email cannot be empty")
    @Column(unique = true)
    private String email;
    private String designation;
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    @CreationTimestamp
    private Date registrationDate;
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date activationDate;
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date deActivationDate;

    @ManyToMany(cascade = CascadeType.REMOVE, fetch = FetchType.EAGER)
    @JoinTable(name = "users_roles",
        joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "role_id"))
    private Set < Role > roles;
}

@Entity
@Data
@Table(name = "role")
public class Role {
    @Id
    @Column(name = "role_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;

    @ManyToMany(mappedBy = "roles")
    Set<User> userRole;
}
0

There are 0 best solutions below