【发布时间】:2014-02-04 10:44:03
【问题描述】:
我在具有主键构造函数的实体上有一个 Hibernate 持久化,但是在我不知道的事情之后它在数据库中没有生效,而我在其他一些方法中需要它
这是我的代码:
Base_Document document = new Base_Document(workItem.getProcessInstanceId());
this.getEntityManager().persist(document);
this.getEntityManager().flush();
this.getEntityManager().close();
还有一些我有的地方:
Object o = this.getEntityManager().find(Base_Document.class,
workItem.getProcessInstanceId());
其中o 是null。有什么帮助吗?
我的实体代码:
@Entity
public class Base_Document implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long processInstanceId;
private DocumentStatus status;
@ManyToOne
private Base_Roles creatorRole;
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date createDate;
public Base_Document() {}
public Base_Document(Long processInstanceId) {
this.processInstanceId = processInstanceId;
this.createDate = new Date();
this.status = DocumentStatus.DRAFT;
try {
String currentUser = PublicUtils.getHttpServletRequest().getUserPrincipal().getName();
this.setCreatorRole(PublicUtils.getEntityManager().find(Base_Roles.class, currentUser));
} catch (PolicyContextException ex) {
Logger.getLogger(Base_Document.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Long getId() {
return processInstanceId;
}
public void setId(Long id) {
this.processInstanceId = id;
}
public Long getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(Long processInstanceId) {
this.processInstanceId = processInstanceId;
}
public DocumentStatus getStatus() {
return status;
}
public void setStatus(DocumentStatus status) {
this.status = status;
}
public Base_Roles getCreatorRole() {
return creatorRole;
}
public void setCreatorRole(Base_Roles creatorRole) {
this.creatorRole = creatorRole;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
【问题讨论】:
-
你设置的交易模式是什么?
-
请贴出实体代码。它可能包含几个可能导致此行为的问题。
-
我没有看到实际的提交正在完成;冲洗可能还不够。
-
事务模式是 JTA (Crossfire) 并且这里绝对没有提交,因为它是自动提交 (Gimby) 和 (kostja) 实体代码添加
标签: java hibernate transactions persist