私はgrailsを初めて使っていて、何かを作成しようとしていますが、ドメイン設計上大きな問題があります。GORMは2つのクラス間で1対多の関係でテーブルを作成しません
基本的に私はこのような構造をしたいのですが:
ユーザーは多くのバスケットを持って
バスケットは多くのユーザーを持っており、内部に多くのボックスを持っており、多くの宝石
Aボックスであることができますバスケットの中にたくさんの宝石があります
各宝石には多くの所有者がいます。
ユーザーがバスケットを作成することができ、彼は(作成)ボックスを置くことができるバスケットの内側、およびボックス内のジュエルは、他のユーザーを追加/削除することができます(作成)置くことができる(それも所有者になります)に バスケットと宝石に、バスケットの所有権から自分自身を取り除くと、他のユーザーはまだバスケットを所有しています。誰もバスケットを所有していなければ、バスケットは消えます。
ユーザはボックスを削除することができ、内部の宝石はバスケットで終わり、ユーザは宝石であるボックスで編集することができます。
私はそれらのドメインに来ましたが、私はバスケットを作成しても自分自身をUser BasketListに追加したり、UserListというバスケットを作成したりすることはできません。
class User{
String name
static hasMany = [basketList: Basket, jewelList: Jewel, kanbanCards: KanbanCard]
}
class Basket{
String name
static hasMany = [userList: User, boxList: Box, jewelList: Jewel]
}
class Box{
String name
static belongsTo = Basket
static hasMany = [jewelList: Jewel]
}
class Jewel{
String name
static belongsTo = Basket
static hasMany = [userList: User]
}
これらのドメインのいずれかが正しいですか?私はそれが機能するために欠けているものは何ですか?
編集:私は(メソッドを作成し、足場を使用して)バスケットを作成しようとすると、私はすべてのユーザーのリストを持っている
class User{
String name
static hasMany = [basketList: Basket, jewelList: Jewel, kanbanCards: KanbanCard]
static mapping = { //added joinTable proprerty for many-to-many
basketList joinTable: [name: "mm_user_basket", key: 'mm_user_id' ]
}
}
class Basket{
String name
static belongsTo = User //added belongsTo
static hasMany = [userList: User, boxList: Box, jewelList: Jewel]
static mapping = { //added joinTable proprerty for many-to-many
userList joinTable: [name: "mm_user_basket", key: 'mm_basket_id' ]
}
}
class Box{
String name
static belongsTo = Basket
static hasMany = [jewelList: Jewel]
}
class Jewel{
String name
static belongsTo = Basket
static hasMany = [userList: User]
}
:
は、だから今私はこのようなドメインを変更しました私はそれらのうちの1つを選択しますが、保存すると、関連付けられているユーザーがいない名前の新しいバスケットが作成されます。
を私は非常にこのhttps://www.youtubeを見てお勧めします。 com/watch?v = VUMQGrNi2F0基本的に、すべての頭痛を抱えて、ドメインクラスのセットやリストを使って、他のクラスから必要なものを得ることができます。しかし、一時的なショッピングカートオブジェクトを格納するためにドメインクラスを使用して誤解を完全に犯しているのではないかと思います。検証ビーンを使用してそのすべてを収集し、すべてを処理して保存するのが良い時です。ユーザーがカートに何かを追加したり削除したりするたびに収集するのであれば、巨大なデータベースになります – Vahid
一時ファイルを保存するためにDomainクラスは必要ありません。 私はそれらのオブジェクトのすべてを永続的でアドレッシングできるものにする必要があります(例:与えられたユーザーのすべてのバスケットのリスト、彼が "開く"ことができ、その中に与えられたバスケットのすべてのボックスが表示されます)。 あなたのビデオを見て、私はかなりそれから学ぶことがたくさんあることを確かめて、ありがとう! – baboo