1

MySQL Workbenchを使用してMySQLデータベースを作成し、次にMySQL JDBC DriverとEclipseLinkライブラリを追加して、データベースからエンティティクラスを作成しました。すべてNetBeansを使用します。ビューとすべてのマージのために、単純な「id」列名の使用を辞任する必要がありました。「id」->「TableNameId」のようにすべての名前を変更する方が簡単でした。エンティティクラスの作成中に、すべてのエンティティのIDを手動で設定する必要があるというメッセージが表示されました。どうやってするか?すべてのテーブルには、TableName.javaファイルとTableNamePK.javaファイルがあります。

TableNamePK.javaファイルには次のような行があります。

    @EmbeddedId
    protected AdministratorsPK administratorsPK;

TableNamePK.javaファイル内のそのような行:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "UserId", nullable = false)
private Integer userId;

それでいいと思いますが、メッセージが気になります。それを機能させるために何かしなければならないことはありますか?

エラーとしてスローされます:

例外の説明:エンティティクラス[classkwestionariusz.manager.View2]に主キーが指定されていません。@ Id、@ EmbeddedId、または@IdClassのいずれかを定義する必要があります。これらのアノテーションのいずれかを使用してPKを定義した場合は、エンティティクラス階層にアクセスタイプ(フィールドとプロパティの両方にアノテーションが付けられている)が混在していないことを確認してください。

私はそれが2番目のケースだと思います...しかしそれを正しくする方法は?

4

1 に答える 1

1

主キーが単純な整数フィールドの場合、必要なのは@Idアノテーションを使用することだけだと思います。フィールド名が属性名と一致する限り、次のようになります。

@Id
protected int administratorsPK;

これまで@EmbeddedIdを使用したことはありませんが、Embeddableクラスを定義する必要がある複合PK(ドキュメントを参照)がある場合にのみ必要だと思います。ただし、データベース構造がわからないと、NetBeansがこれらのクラスを生成した理由を説明するのは困難です。

余談ですが、私の意見では、すべてのPKフィールドに「id」という名前を付けると、作業が簡単になります。ビューとマージの複雑さを回避するには、ASキーワードを使用してSELECTステートメントで名前を変更します。

SELECT id AS AdministratorsPK FROM Administrators;
于 2012-05-29T13:50:04.337 に答える