2011-06-01 8 views
1

私は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は、私は、次の(驚くべきことではありません)エラーを取得しますか?

+0

これは恐らくhttps://hibernate.onjira.com/browse/HHH-1935で報告されているバグに関連しています –

答えて

1

おそらく、PricePKのフィールド/ゲッターで@Column(nullable = false)の変種を使用することで問題を回避できます。

関連する問題