Netbeans 7.4 RC2 を使用して、Java SE 7 アプリケーションでデータベース (Oracle 11g) からエンティティ クラスを作成しています。テーブルの構造は次のように定義されています。
このようなカスケード定義の背後にあるのは、親コードとして定義されている場合、ユーザーがコードを削除できないようにすることです。しかし、それは単なる子コードであり、ユーザーはそれを削除できます。さらに、CODE_ID は 0 ~ 1 個の親コードを持つことができます。ご覧のとおり、強調表示された列には、CODE_RELATION テーブルで定義された親がありません。
ウィザードを使用してデータベースからエンティティ クラスを生成すると、クラスは次のように生成されます。
@Entity
@Table(name = "CODES")
public class Codes implements Serializable {
@Id
@Column(name = "CODE_ID", nullable = false, length = 30)
private String codeId;
@Column(name = "CODE_DESC", length = 200)
private String codeDesc;
@Column(name = "ACTIVE", nullable = false)
private char active;
@JoinTable(name = "CODE_RELATION", joinColumns = {
@JoinColumn(name = "CODE_ID", referencedColumnName = "CODE_ID", nullable = false)}, inverseJoinColumns = {
@JoinColumn(name = "PARENT_CODE_ID", referencedColumnName = "CODE_ID", nullable = false)})
@ManyToMany
private List<Codes> codesList;
@ManyToMany(mappedBy = "codesList")
private List<Codes> codesList1;
//Getter, Setter properties
}
生成されたエンティティのどこにも参照されているカスケード制約が表示されないため、少し混乱しているように思えます。このエンティティはテーブルの構造と制約を正確に反映していますか?
構造を改善するための提案をお願いします。
PS私はJavaの世界が初めてです。