【问题标题】:JPA Discriminator ValueJPA 鉴别器值
【发布时间】:2013-11-20 12:34:02
【问题描述】:

我对 JPA 和鉴别器值有疑问。 value=0 应该映射为 user 并且 value=1 应该映射为 admin 但我只获取用户

@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 {

【问题讨论】:

    标签: java jpa eclipselink


    【解决方案1】:

    你的用户组是字符串,你设置 discriminatorType = DiscriminatorType.INTEGER

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

    将 userGroup 类型更改为整数,如果它是数据库中的字符串(表中 userGroup 字段的类型),则 remove discriminatorType = DiscriminatorType.INTEGER

    @DiscriminatorColumn(name="usergroup")
    

    因为 discriminatorType 的默认值是字符串。

    【讨论】:

    • 我已将其更改为 Integer 并对其进行了测试,即使使用 int 但同样的问题.. 在数据库中字段的类型是 int
    • 您的意思是您还更改了数据库中字段的类型?我还在您的代码中看到您将零(0)映射到用户,将一(1)映射到管理员?这是您想要的吗?
    • 如果您更改为整数,您还应该将 @DiscriminatorValue("0") 更改为 @DiscriminatorValue(0) 并将“1”更改为 1 用于管理员..
    • user(0) admin(1) 正确...我在查询中找到了问题 return em.createQuery("SELECT c FROM UserModel c", UserModel.class).getResultList ();而不是 UserModel 我有用户
    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多