Hibernate4.1.9で好きな方法で外部キーをモデル化する際に問題が発生します。
私は基本的に次のコードを持っています:
@Entity
@XmlRootElement
@Table(name="User")
public class UserVO
{
private String email;
@Id
@Column(name="email", unique=true, nullable=false)
@XmlElement
public String getEmail()
{
return this.email;
}
}
この:
@Entity
@XmlRootElement
@Table(name="Authentification")
public class AuthentificationVO
{
private String email;
private UserVO user;
@Id
@Column(name="email", unique=true, nullable=false)
@XmlElement
public String getEmail()
{
return this.email;
}
@OneToOne(cascade = CascadeType.ALL)
@ForeignKey(name="user_fk")
public UserVO getUser()
{
return this.user;
}
}
すべてのポイントは、両方のテーブルにemailという名前の列があることです。これは、UserテーブルとAuthentificationテーブルの両方の主キーとしても機能する必要があります。何らかの理由で、これを実行すると、Hibernateはuser_emailという名前の列をAuthentificationテーブルに追加するように要求しますが、emailという名前の既存の列を使用するようにします。
私はこれに対する解決策を探してみましたが、JoinColumnと一緒にmappedByアノテーションを使用して正しく処理しようとしましたが、何もうまくいかないようです。