Search code examples
javajpaeclipselink

JPA Discriminator Value


I have a problem with JPA and Discriminator Value. value=0 should be mapped as a user and value=1 should be mapped as a admin but I only get the users

@Entity
@Table(name="T_USERS")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="usergroup", discriminatorType = DiscriminatorType.INTEGER)
public abstract class UserModel implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="T_USERS_PK")
private int id;
@Column(name="username")
private String username;
@Column(name="password")
private String password;
@Column(name="firstname")
private String firstname;
@Column(name="lastname")
private String lastname;
@Column(name="usergroup")
private String usergroup;

-

@Entity
@DiscriminatorValue("0")
public class User extends UserModel {

-

@Entity
@DiscriminatorValue("1")
public class Admin extends UserModel {

Solution

  • Your usergroup is string and you set discriminatorType = DiscriminatorType.INTEGER

    @Column(name="usergroup")
    private String usergroup;
    

    Change userGroup type to integer and if it is string in your database (type of userGroup field in table) then remove discriminatorType = DiscriminatorType.INTEGER

    @DiscriminatorColumn(name="usergroup")
    

    because defalut of discriminatorType is string.