0
JPA(hibernate、spring tool suite)を使用する私は2つのテーブルの列のうちの1つが外部キーであるために一意制約を作成しようとしています。私は構文を理解することはできません。JPAで外部キーに一意制約を設定する方法
試しました。
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"company.companyId" , "state"})})
@Entity
public class Branch {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int branchId;
@ManyToOne(optional = false)
private Company company;
@Column
int state;
}
が、私はエラーを取得:
database column 'company.companyId' not found. Make sure that you use the correct column name which depends on the naming strategy in use (it may not be the same as the property name in the entity, especially for relational types)
ので、私は、このような "のcompany_id" と "company_company_id" と "company_companyId" など、いくつかの他の方法を、試してみました。それらのどれも働かない。
'@ UniqueConstraint'の' columnNames'は常にエンティティの関係/属性ではなく、物理テーブルの列を参照します。 'company_company_id'はおそらくJPA/HibernateがCOMPANYテーブルを作成したときに生成されたデフォルト名です。それを明確にするために' @ Column'アノテーション – Ish
@lshでカラム名を明示的に指定していない限りです。私は "コードを最初に"やっていて、おそらく最善の選択ではなかった私のカラム(ergoはデフォルト名を取る)の名前を付けませんでした。 –