作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 hibernate 的新手,我设法让它与一些表和外键一起工作,但我需要保存 java 对象的层次结构,而且我不知道如何以最好的方式做到这一点。我会像这样简化我的问题
请求可能会产生 0..* 响应
响应与 1 个请求关联
一个 Response 还有 2 个 ResponseDetail 对象
ResponseDetail 与 1 个响应关联
Class Request{
@Id
int reqId;
}
Class Response
{
@Id
int respId;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "reqId")
Request req; //foreign key from request
ResponseDetail rd1;
ResponseDetail rd2;
}
Class ResponseDetail{
???
int rdId;
other stuff...
}
现在java端我会得到一些响应,手动设置他们的Request对象,我需要保存这个响应并自动让hibernate保存ResponseDetail rd1和rd2,老实说我不知道如何继续。
理想情况下,我需要一种方法在某些响应上使用 hibernate 的 save 方法,它会自动将 ResponseDetail 保存在数据库中并在 rd1 和 rd2 字段中设置引用
我应该使用什么映射?如何正确地达到我的目标?
最佳答案
@Entity
class Request
{
@OneToMany(mapped-by="request", cascade=CascadeType.ALL)
public List<Response> getResponses()
// implementation
}
@Entity
class Response
{
@OneToOne
@JoinColumn(name="request_id")
public Request getRequest()
// implementation
}
保存之前,在您的服务部分中,您应该为所有子对象设置父对象(本例中为 Request)。
for(Resposne res:request.getResponses(){
res.setRequest(request);
}
yourService.save(request);
关于java - Hibernate 正确的级联映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43983989/
我是一名优秀的程序员,十分优秀!