時間がない場合は、例を見てください
一時ユーザーと永続ユーザーの 2 種類のユーザーがいます。
一時的なユーザーはシステムをゲストとして使用し、名前を入力して使用しますが、システムはそれらを追跡する必要があります。
永久ユーザーとは、登録済みの永久ユーザーです。
ユーザーが自分の永久記録を作成したら、ユーザーがゲストであった間に追跡されたすべての情報を永久記録にコピーする必要があります。
クラスは次のとおりです。
@Entity
public class PermUser{
@Id
@GeneratedValue
private long id;
@OneToMany
private List Favorites favorites;
....
}
@Entity
public class Favorites {
@Id
@GeneratedValue
private long id;
@OneToMany (cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List <FavoriteItems> items;
...
}
@Entity
public class FavoriteItems {
@Id
@GeneratedValue
private long id;
private int quantity;
@ManyToOne
private Ball ball;
..
}
@Entity
public class TempUser extends PermUser{
private String date;
....
}
問題は次のとおりです。
tempUser オブジェクトのクローンを作成すると、id パラメータもコピーされるため、perm ユーザー オブジェクトを保存すると、「キーのエントリ '10' が重複しています ...」のようなメッセージが表示されます。最初に tempUser を削除してから保存することはできません。 permUser permUser の保存に失敗したかのように、データが失われます。アイテムの ID なしでお気に入りのアイテムの各ボールを個別にコピーしようとすると、効率的な方法ではありません。
例 ( 1 つの文での質問:示されているように、ユーザーは複数の TempUser レコードと 1 つの PermUser レコードしか持たない可能性があるため、すべての TempUser レコードの情報をその 1 つの PermUser レコードに追加する必要があります。)
Type of record | name | favorites | date
| | |
1)TempUser | Jack | 2 items | 1/1/2013
2)TempUser | Jack | 3 items | 1/4/2013
---------------------------------------------------------------------------
PermUser | Jack | 5 items ( 2 + 3 items from his temp records)
*注意してください、私は解決策を見つける必要があり、オブジェクトを複製するのではなく、新しい解決策を試すかどうかは気にしません.
私が 2 つの異なるクラスを持っている理由は、tempUser
追加の属性がほとんどないtempUsers
ためpermUser
です。また、前述のように、ユーザーは関連のない多くの異なる一時レコードを持つ場合があります