私はhbm2ddl(hibernate3-maven-plugin 2.2から)を使用して、JPAの注釈付きエンティティに基づいてDDLを生成しています。通常、これは正常に動作しますが、最近、2つの外部キーで構成される複合キーを使用するエンティティを導入しました。これがDDL生成に問題を引き起こしています。Hibernate HBM2DDLは、プライマリの外部キーに対してnull可能なフィールドを生成しますか?
具体的には、生成されるDDLは、主キー列がNULL可能であることを指定します。これは主キー列の場合には当てはまりません。その結果、MSSQLはNULLがNULL可能なために主キー制約を作成できません。ここで
エンティティ
は、企業が、それは主キーを構成する2つのManyToOneエンティティが意味すべき(オプションではないことを、もっと重要なのは、その主キークラスとしてPricePKを使用していることを指定し@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@IdClass(PricePK.class)
public class Price extends PersistentEntity {
@Id
@ManyToOne(optional = false)
private Product product;
@Id
@ManyToOne(optional = false)
private Currency currency;
@Column(nullable = false)
private BigDecimal amount;
...etc...
}
です列はDDLで 'not null'です)。ここでPricePKクラスは次のとおりです。
@Embeddable
public class PricePK implements Serializable {
Integer product;
Integer currency;
...etc...
}
次のように価格表のために生産されたDDLがある - そのcurrency_idに注意したproduct_idの両方がnullを許可する:
create table PRICE (
version int null,
amount numeric(19,2) not null,
currency_id int null,
product_id int null,
primary key (currency_id, product_id)
);
私はスクリプトを実行しようとすると、
Unsuccessful: create table store.PRICE (version int null, amount numeric(19,2) null, currency_id int null, product_id int null, primary key (currency_id, product_id)) Cannot define PRIMARY KEY constraint on nullable column in table 'PRICE'.
すべてのアイデア、なぜこれらの2つの外部キー列の指定「ヌル」を生産されているDDL:MSSQLは、私は、次の(驚くべきことではありません)エラーを取得しますか?
これは恐らくhttps://hibernate.onjira.com/browse/HHH-1935で報告されているバグに関連しています –