java - 仅在辅助表中保留值

标签 java hibernate jpa-2.0 deltaspike-jpa

任何人都有如何仅在辅助表中保留值的示例?

@Entity
@Named("account")
@Table(name = "ACCOUNT", uniqueConstraints = {})
@SecondaryTables({ @SecondaryTable(name = "ACCOUNTCOMMENT", pkJoinColumns =   { @PrimaryKeyJoinColumn })) {
...
@Column(table = "ACCOUNTCOMMENT", name = "COMMENTS", unique = false, nullable = true, insertable = true, updatable = true, length = 4000)
public String getComment() {
    return this.comment;
}

public void setComment(String comments) {
    this.comment = comments;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(table = "ACCOUNTCOMMENT", name = "LAST_EDITED", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
public Date getCommentLastEdited() {
    return this.commentLastEdited;
}

public void setCommentLastEdited(Date lastEdited) {
    this.commentLastEdited = lastEdited;
}

@Column(table = "ACCOUNTCOMMENT", name = "LAST_EDITOR_EMPLOYEE_ID", unique = false, nullable = true, insertable = true, updatable = true, length = 10)
public String getCommentLastEditorEmployeeId() {
    return this.commentLastEditorEmployeeId;
}

public void setCommentLastEditorEmployeeId(String lastEditorEmployeeId) {
    this.commentLastEditorEmployeeId = lastEditorEmployeeId;
}

....
}

我正在尝试仅更新辅助表 (AccountComment) 中的值。我正在使用 hibernate 4 和 JPA2。

尝试了下面的代码,

@Transactional
public void saveAccountComment() throws SystemException {
    System.out.println("Entered into saveAccountComments method...");
    Account acct = acctInfo.getAccount();
    acct.setComment(accountForm.getCommentText());
    Date lastEdited = new Date();
    acct.setCommentLastEdited(lastEdited);
    Officer lastEditor = utils.getOfficer();
    acct.setCommentLastEditorEmployeeId(lastEditor.getEmployeeId());
    accountForm.setLastEditDate(lastEdited);
    accountForm.setLastEditor(lastEditor.getEmpIdAndFullName());
            em.persist(acct);
}

它不起作用。也没有错误日志。当我调用 saveAccountComment() 方法时。 IT 卡住了。

有人知道如何只在辅助表中保留值吗?

最佳答案

我已经找到了我的问题的解决方案。以下代码有助于保留帐户对象。

@Transactional
public void saveAccountComment() throws SystemException {
 Date lastEdited = new Date();
    Officer lastEditor = utils.getOfficer();
    accountForm.setLastEditDate(lastEdited);
    accountForm.setLastEditor(lastEditor.getEmpIdAndFullName());

    Query q = em.createNamedQuery("findAccountByAccountKey").setParameter("accountKey", acctInfo.getAccount().getAccountKey());
    Account account = (Account) q.getSingleResult();
    account.setCommentLastEdited(lastEdited);
    account.setCommentLastEditorEmployeeId(lastEditor.getEmployeeId());
    account.setComment(accountForm.getCommentText());
    em.persist(account);
}

不是持久化帐户对象,而是直接传递 id(在我的例子中是帐户 key )并检索对象并设置值并持久化。

关于java - 仅在辅助表中保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348381/

相关文章:

java - Hibernate 一对一条件获取

java - 两列之间差异的 Hibernate 标准

java - JPA TypedQuery 错误

java - 为什么我们必须在 persistence.xml 中提供数据库凭据

mysql - 如何更改原始数据类型的默认值

java - 如何主动将 JLabels 从 ArrayList 设置到 JPanel?

java - JSF 值未在 bean 中更新

java - 数据库行上的锁的范围(简单)

java - 使用 Hibernate 时,findByUuid() 在 MySQL-DB 中不起作用

jpa-2.0 - @Inject 和 @EJB 有什么区别