0

次のテーブルがあります。

Login -> (id, username, password)
Members -> (member_id, name, address)

id は、1 対 1 のマッピングで member_id に関連付けられます。

私は2つのモデルを次のように書きました

ログインモデル:

@Entity
@Table(name = "Login", uniqueConstraints = { @UniqueConstraint(columnNames = "username") })
public class Login {

private int id;
private String username;
private String password;
private Members members;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public int getId() {
    return id;
}

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "id", referencedColumnName = "member_id")
public Members getMembers() {a
    return members;
}

}

メンバーモデル:

@Entity
@Table(name = "Members")
public class Members {
private int member_id;
private String name;
private String address;

@Id
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = { @Parameter(name = "property", value = "Login") })
@Column(name = "member_id")
public int getMember_id() {
    return member_id;
}

private Login login;

@OneToOne(fetch = FetchType.LAZY, optional = true, cascade = CascadeType.ALL)
public Login getLogin() {
    return login;
}

}

簡単にするために、いくつかのゲッターとセッターを削除しました。とにかく、どこが間違っているのか教えてもらえますか? 注釈の値を変更しているときに、マッピングが見つからない、永続クラスが不明などのエラーが発生します。

エラー

org.springframework.web.util.NestedServletException: リクエストの処理に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: クラスパス リソース [データベース/Hibernate.xml] で定義された名前 'sessionFactory' を持つ Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.AnnotationException です: org.sparsham.login.model.Login.members の @OneToOne または @ManyToOne は不明なエンティティを参照しています: processRequest(FrameworkServlet.java:894) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.サービス (HttpServlet.java:722)

4

1 に答える 1

1

これで最後の問題が解決することを願っています。これらの変更を試してください。

ログインモデル:

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = true)
@PrimaryKeyJoinColumn
public Members getMembers() {a
    return members;
}

メンバーモデル:

@Id
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign", parameters = { @Parameter(name =          "property", value = "login") })
@Column(name = "member_id")
public int getMember_id() {
    return member_id;
}

private Login login;

@OneToOne(fetch = FetchType.LAZY, optional = true, cascade = CascadeType.ALL, mappedBy="members")
@PrimaryKeyJoinColumn
public Login getLogin() {
    return login;
}

@GenericGeneratorアノテーションの@Parameter部分に注意してください。「ログイン」では、大文字と小文字が区別される可能性があります。

于 2012-05-30T08:10:16.667 に答える