2014-02-04 2 views
0

У меня есть Hibernate сохраняются на лицо с первичным ключом конструктора, но он не вступает в силу в базе данных после чего-то я не знаю, а мне это нужно в некоторых других методахEntityManager ничего не найти сразу после упорствовать

Вот мой код:

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; 
} 

} 
+0

Каков режим транзакции, который вы установили? –

+0

Просьба указать код сущности. Он может содержать несколько вопросов, которые могут отвечать за это поведение. – kostja

+0

Я не вижу, чтобы совершалось фактическое совершение; может быть недостаточно флеша. – Gimby

ответ

0

От Hibernate "упорствовать" Описание:

Однако, это не гарантирует, что значение идентификатора будет назначен упорному, например сразу

https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Web_Platform/5/html/Hibernate_Core_Reference_Guide/objectstate-makingpersistent.html

Вы можете использовать «save()», если требуется немедленно выполнить поиск.

Смежные вопросы