【问题标题】:RMI+hibernate,how can client get generated idRMI+hibernate,客户端如何获取生成的id
【发布时间】:2023-11-06 16:50:02
【问题描述】:
@Entity
public class Record implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

@OneToMany(fetch=FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@Cascade(value={CascadeType.SAVE_UPDATE})
private List<Comment> commentList=new ArrayList<Comment>();

}

@Entity
public class Comment implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

@Column(columnDefinition="text")
private String content;
}

我的客户端中有一条记录,并在列表中添加了一些 cmets。
使用 RMI 方法:void update(Record reocord)。
然后在服务器上,休眠将 id=0 的评论保存到数据库中,并给出生成的 id。

如何分配这些客户端中评论的 ID?如果没有,另外一次我调用 update(Record reocord),评论将被添加两次。


也许:Record update(Record reocord),但我认为如果 Record 有大数据是不明智的。

【问题讨论】:

  • 好吧,我最后还是选择了每次添加新的时候都返回comment的id来解决这个问题。我最好对数据库关系和架构做一个更好的设计。

标签: java hibernate rmi


【解决方案1】:

我遇到了这个问题。如果您正在自动生成主键(主要用于规范化表),请根据现有数据自行创建唯一 Id。请记住覆盖 hashcodeequals 以进行比较。

【讨论】: