4

@OneToManySpring Rooを使用して、一方向の関係を持つエンティティを生成しようとしています。これが私が試したことです:

entity --class ~.family.Child
field string --fieldName name
controller scaffold ~.web.ChildController
entity --class ~.family.Father
field string --fieldName name
field set --fieldName children --element ~.family.Child --cardinality ONE_TO_MANY 
controller scaffold ~.web.FatherController
perform package

これにより、期待されるエンティティとデータベーステーブル(リンクテーブルを含む)Fatherが生成されます。エンティティは、JPA仕様に準拠する次のアノテーションを使用して生成されます。

@OneToMany(cascade = CascadeType.ALL)
private Set<family.Child> message = new java.util.HashSet<family.Child>();

しかし、Rooで生成された管理ページに移動し、をクリックCreate Fatherすると、次のメッセージが表示されます。

父を作成する

Name:      (field to enter name)
Children:  This relationship is managed from the Father side.

これはRooのバグのようです。誰かが回避策を見つけましたか?または、ここにエラーがありますか?

4

2 に答える 2

6

OK、回避策fathers/create.jspxは次のとおりです。ファイルで、Rooは次の行を生成します。

<field:simple field="children" id="c:family.Father.children" messageCode="entity.reference.not.managed" 
 messageCodeAttribute="Child" z="dMKrUOiCeYNub4vNayuiWJ99s1k="/>

これは次のように置き換える必要があります。

<field:select field="children" id="c:family.Father.children" itemValue="id" 
 items="${children}" multiple="true" path="/children"/>

そしてそれはうまくいくはずです。

于 2010-07-07T20:58:05.643 に答える
0

はい、それはおそらくバグです!

私は同じコマンドを持っていました。古いバージョンのRooで動作しましたが、古いバックアップスクリプトを試しました。それはもう機能していません。

于 2011-09-05T11:34:45.973 に答える