如果没有时间请看示例
我有两种类型的用户,临时用户和永久用户。
临时用户以访客身份使用系统,只需提供他们的姓名并使用它,但系统需要跟踪他们。
永久用户是已注册的永久用户。
一旦用户为自己创建了永久记录,我需要将用户作为访客时跟踪的所有信息复制到他的永久记录中。
课程如下,
@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 用户对象时,它会显示一条消息,如“Duplicate entry '10' for key ...”,我无法先删除 tempUser 然后保存permUser 好像保存 permUser 失败我会错过数据。如果我尝试在没有项目 ID 的情况下分别复制每个收藏项目球,那将不是一种有效的方法。
示例(一句话中的问题:如图所示,一个用户可能有多个 TempUser 记录和一个 PermUser 记录,因此我需要将所有 TempUser 记录的信息添加到该单个 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)
*请注意,我需要找到解决方案,并且不在乎是否尝试新的解决方案而不是克隆对象。
我有两个不同的类的原因是它tempUser
的附加属性很少,我可能还需要将几个收藏夹添加tempUsers
到一个收藏夹列表中permUser
。并且如上所述,用户可能有许多不同的不相关的临时记录