【问题标题】:can i have a method in entity class without Mapping to the database我可以在实体类中有一个方法而不映射到数据库吗
【发布时间】:2011-09-01 13:47:49
【问题描述】:

我正在使用 Hibernate 与 MySQL 进行映射

我有一个实体类,其中的方法与 MySQL 中的列映射

问题是,如果我没有将该类中的某些方法映射到 SQL 中的任何列,就好像我尝试不将我的一个方法映射到实体类中一样,它会给出异常。

这是代码 sn-p ,我正在尝试

@Column(name="skills")
public String getSkills() {
    return skills;
}

public void setSkills(String skills) {
    this.skills = skills;
}
@Transient
public int getRowCount() {
    return rowCount;
}

public void setRowCount(int count) {
    this.rowCount = count;
}

我使用过@transiet,但在此之后,如果我在 setRowCunt 中设置一些值,然后尝试使用 getRowCount 获取相同的值,它会给出空值,任何人都有一些想法

谢谢

【问题讨论】:

  • 但是,getRowCount 返回一个原始整数。它怎么会给出一个空值?

标签: java hibernate jpa annotations


【解决方案1】:

@Transient 注释是正确的。也许您在一个对象中设置 rowCount 值,而不是从 db 中获取它并尝试从中获取值? - 它显然会失败,因为该字段没有持久化并且您正在处理该对象的新实例。

也许您可以提供更广泛的上下文 - 设置值和获取 null 之间的步骤是什么?

【讨论】:

  • 谢谢,我不想为这个 rowCount 包含数据库,因为那里没有这样的列。目的是设置我自己的值,然后从其他地方获取它,但我不是在处理对象的新实例,步骤是 CandidateResumeInfo.setRowCount(count);返回候选人简历信息;然后从我返回这个完整对象的那个类中,我使用 int rowcount = CandidateResumeInfo.getRowCount();难道我做错了什么 。谢谢
  • 如果这些是描述的步骤,它应该可以正常工作。也许你有一些修改你的bean的中间件?您是否尝试过调试模型对象?检查调用 setRowCount() 方法后 rowCount 属性是否更新为正确的值。
  • 谢谢,是的,我已经调试过了,是的方法 setrowcount 在调用后更新,但是在我使用 gtrowcount 的另一个类中,所有方法都有一些值(来自 sql,因为它们与某些列链接在 sql 中)但此方法始终为 0 ,即使在从 setrowcount 设置之后也是如此。
  • 好的,它现在可以工作了,你说得对,中间件中有一些东西正在修改我的 bean,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2019-03-27
  • 2016-07-11
  • 2013-08-18
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多