Java2EE を使用して Twitter のようなプロジェクトを実行しようとしています。データベースの簡単なビューを次に示します。
Mention、Followers、Following は 3 つの JoinTable です。(前述の、follower、following、およびすべてのユーザー フィールドに外部キーとして User.username があることに注意してください。) 最初の問題に問題があり、デプロイが次の例外で失敗します。
例外の説明: 要素 [フィールドの言及] にマッピングされた参照列名 [ユーザー名] は、マッピング参照の有効なフィールドに対応していません。
2 つのエンティティのマッピングを次に示します。
つぶやき :
public class Tweet implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id", nullable = false)
private Integer id;
...
@JoinColumn(name = "user", referencedColumnName = "username")
@ManyToOne
User user;
@JoinTable(name = "Mention", joinColumns = {
@JoinColumn(name = "tweet", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "mentioned", referencedColumnName = "username")})
@OneToMany
private Collection<Tweet> mentions;
ユーザー :
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "username", nullable = false, length = 50)
...
@OneToMany(mappedBy = "user")
Collection<Tweet> tweets;
@JoinTable(name = "Following", joinColumns = {
@JoinColumn(name = "user", referencedColumnName = "username")}, inverseJoinColumns = {
@JoinColumn(name = "following", referencedColumnName = "username")})
@OneToMany
Collection<User> following;
@JoinTable(name = "Followers", joinColumns = {
@JoinColumn(name = "user", referencedColumnName = "username")}, inverseJoinColumns = {
@JoinColumn(name = "follower", referencedColumnName = "username")})
@OneToMany
Collection<User> followers;
@OneToMany(mappedBy = "mentions")
Collection<Tweet> mentioning;
マッピングの何が問題になっていますか? 誰かが私に解決策を教えてもらえますか?