2017-04-18 16 views
2

私はJPA + Hibernateでサーブレットを使用しています)。私はこのフォーラムで提案されている他のソリューションを試していない限り、エラーを理解していません。実際には、UserAccountクラスをエンティティとして格納することは望ましくありません。私はちょうどUtilisateurクラス(UtilisateurクラスのIdはuseraccountクラスで宣言されています)で宣言したいと思います。継承状態階層で宣言クラスが見つかりません: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; 
} 

}

+0

あなたはUserAccountクラスを投稿できますか? –

+0

こんにちは、あなたはUserAccountクラスを見ることができませんでしたか? useraccountを保存したくない場合は、メインのメッセージ –

+0

に投稿して、別のフィールドをIDとしてマークし、useraccountの上に一時アノテーションを入れてください。 –

答えて

2

主キー組み込みを使用する必要があります。

ここでの質問をStackoverflow How to create and handle composite primary key in JPAで見てください。

よろしくお願いいたします。

+2

ここに、リンクが使用できなくなることがあります。 – Markus

+0

あなたは正しいです!私はそれを修正します!ありがとう! –

0

埋め込み主キーに@EmbeddedIdが含まれている場合に発生することがあります。サブコンポジットキーに@Embeddedを注釈する必要があります。

関連する問題