【问题标题】:Declaring class is not found in the inheritance state hierarchy: UserAccount在继承状态层次结构中找不到声明类:UserAccount
【发布时间】:2017-09-14 01:01:52
【问题描述】:

我正在使用带有 JPA+Hibernate 的 servlet)。我不明白这个错误,除非我尝试过这个论坛中建议的其他解决方案。事实上,我不想将UserAccount 类存储为实体;但我只想在Utilisateur 类中声明它(Utilisateur 类的ID 在useraccount 类中声明)。

我的代码:

@Entity
@Table(name = "utilisateur")
public class Utilisateur implements Serializable {

    @Id
    private UserAccount userAccount;

    private Civility civility;

    private Address address;

    private Contact contact;

    @Column(name = "sessions")
    private List<String> sessions;

    @Column(name = "particularRules")
    private boolean particularRules;

    public Utilisateur(UserAccount pAccount, Civility pCivility, 
        Address pAddress, Contact pContact, List<String> 
        pSessions, 
        boolean particularRules) {
        this.userAccount = pAccount;
        this.civility = pCivility;
        this.address = pAddress;
        this.contact = pContact;
        this.sessions = pSessions;
        this.particularRules = particularRules;
    }

    public Civility getCivility() {
        return civility;
    }

    public void setCivility(Civility civility) {
        this.civility = civility;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Contact getContact() {
        return contact;
    }

    public void setContact(Contact contact) {
        this.contact = contact;
    }

    public boolean isParticularRules() {
        return particularRules;
    }

    public void setParticularRules(boolean particularRules) {
        this.particularRules = particularRules;
    }

    public UserAccount getUserAccount() {
        return userAccount;
    }

    public void setUserAccount(UserAccount userAccount) {
        this.userAccount = userAccount;
    }

    public List<String> getSessions() {
        return sessions;
    }

    public void setSessions(List<String> sessions) {
        this.sessions = sessions;
    }
}

@Embeddable
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class UserAccount implements Serializable {
public UserAccount() {

}

public UserAccount(String pId, String pEmail, String pwsd, Date pCreaDate, Date pLastModDate) {
    this.identifier = pId;
    this.email = pEmail;
    this.password = pwsd;
    this.creationDate = pCreaDate;
    this.lastModificationDate = pLastModDate;
}

@OneToOne(mappedBy = "userAccount", cascade = CascadeType.ALL, 
fetch = FetchType.EAGER, orphanRemoval = true, targetEntity = 
Utilisateur.class)
private Utilisateur user;

@Column(name = "creationDate")
@Temporal(javax.persistence.TemporalType.DATE)
private Date creationDate;

@Column(name = "lastModificationDate")
@Temporal(javax.persistence.TemporalType.DATE)
private Date lastModificationDate;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "identifier", nullable = false)
private String identifier;

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

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "password", nullable = false)
private String password;

public String getIdentifier() {
    return identifier;
}

public void setIdentifier(String identifier) {
    this.identifier = identifier;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public Date getCreationDate() {
    return creationDate;
}

public void setCreationDate(Date creationDate) {
    this.creationDate = creationDate;
}

public Date getLastModificationDate() {
    return lastModificationDate;
}

public void setLastModificationDate(Date lastModificationDate) {
    this.lastModificationDate = lastModificationDate;
}

public Utilisateur getUser() {
    return user;
}

public void setUser(Utilisateur user) {
    this.user = user;
}

}

【问题讨论】:

  • 你能发布你的 UserAccount 课程吗?
  • 您好,您看不到 UserAccount 类吗?我在主信息中发布了它
  • 如果您不想保存用户帐户,则将另一个字段标记为 id 并在用户帐户顶部放置临时注释。
  • 谢谢,我终于决定将useraccount保存为实体,但出现了这个错误:org.hibernate.MappingException: component property not found:password

标签: java hibernate jpa servlets


【解决方案1】:

您必须使用嵌入式主键

在 Stackoverflow How to create and handle composite primary key in JPA 中查看此问题的答案。

最好的问候!

【讨论】:

  • 您应该在此处添加至少一个小的注释示例。该链接可能会在一段时间内不可用。
【解决方案2】:

当嵌入式主键包含@EmbeddedId 时可能会发生。子复合键应改为使用 @Embedded 注释。

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多