2017-12-04 11 views
0

現在、Hibernateエンティティ(以下)のJavaプロジェクトで作業しています。私のデータアクセスオブジェクトのレイヤーをテストするために、私はH2 databaseを使用してメモリ内のデータベースを生成し、そこにクエリを投げています。この時点まで、すべてが問題ありません。H2データベースのSQLとして@EmbeddedIdを表す

ただし、@EmbeddedIdアノテーションをシミュレートするときに問題が発生します。

@Entity 
@Table(name = "BSCOBJ") 
public class BasicObject extends AbstractDomainObject { 

    @EmbeddedId // This annotation here 
    private RestrainPK restrain; 

@Embeddable 
public static class RestrainPK implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Column(name = "CODI", nullable = false) 
    private String coDi; 

    @Column(name = "COGA", nullable = false) 
    private String coGa; 

    @Column(name = "TYOR", nullable = false) 
    private String tyOr; 

    public RestrainPK() { 
    } 

    ... // Getters and setters 

    } 
} 

「単純」(もちろん、私は「通常」の要求が結果を与えることを確認)テーブルBSCOBJを作成し、データをフェッチするとき、それは何の価値を与えない取り込みます。このネストされたクラスをSQLテーブル作成/値挿入リクエストでどのように表現すればよいですか?それも可能ですか?事前に

おかげで、

EDIT

要求されたとして、ここではSQL /休止状態に関するいくつかのサンプルが走っています。

作成要求:

CREATE TABLE BSCOBJ (CODI VARCHAR(5) NOT NULL, COGA VARCHAR(5) NOT NULL, TYOR VARCHAR(5) NOT NULL); 

挿入要求:次の値を持つ

select r.restrain.tyOr from mypackage.BasicObject r where r.restrain.coDi = :coDi and r.restrain.coGa = :coGa 

テストコードを実行しようとすると、Hibernateが与え

INSERT INTO BSCOBJ (CODI, COGA, TYOR) VALUES 
('HELLO', 'MAT', 'REF'), 
('BONJ', 'SOME', 'DAIL'), 
('SOPA', 'KDA', 'RATIO'); 

リクエスト

coDi = "BONJ"; 
coGa = "SOME"; 

NoResultExceptionをスローします。私はリクエストの2行目からDAILが来ることを期待しています。

+0

からあなた@Column注釈を削除クエリはあなたのために動作しません –

+0

OKセッションオブジェクト..を使用してクエリの作成を追加しようとしています.. so session.createQuery .. etc –

+0

クエリで 'TYOR'カラムはどこにありますか?すべてのPKフィールドは、データでhibnertaeクエリをポストするのではなく、選択したクエリに含める必要があります。実行するテストコードを投稿してください。 、 –

答えて

0

/挿入..私は@EmbeddedId一度だけ使用しているが、私は、コードの一部を追加しようと、あなたの@EmbeddedId

@EmbeddedId 
@AttributeOverrides({ 
    @AttributeOverride(name = "idpk", column = @Column(name="IDPK", nullable = false), 
    @AttributeOverride(name = "code", column = @Column(name="CODE") 
}) 

@AttributeOverridesが必要であることを考えるとFormulePK

関連する問題