【问题标题】:is it possible to ignore some field when mapping in annotation,Entity class [duplicate]在注释中映射时是否可以忽略某些字段,实体类[重复]
【发布时间】:2011-08-31 17:34:42
【问题描述】:

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

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

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

这里是代码sn-p

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

public int getRowCount() {
    return rowCount;
}

在上面的代码中,我已经为 getSkills 分配了 SQL 中的列技能,但我不想将 getRowCount() 分配给 MySQL 中的任何列。

我怎样才能做到这一点(在上述情况下,它给出了例外,rowCount 是未知的)?

【问题讨论】:

    标签: java jpa annotations


    【解决方案1】:

    使用@Transient注解:

    此注释指定属性或字段不是持久的。它用于注释实体类、映射超类或可嵌入类的属性或字段。

    @Column(name="skills")
    public String getSkills() {
        return skills;
    }
    
    @Transient
    public int getRowCount() {
        return rowCount;
    }
    

    【讨论】:

    • 感谢您的帮助,错误消失了,但我试图通过它的 setter 在 rowCount 中设置一些值,然后我尝试从这个 getter public int getRowCount() { return rowCount ;就像我将它设置为 4 并保存在那里,但是当我尝试 getRowCount 它总是有 0,有什么解决方案吗?谢谢
    • @user764446:你要么让 Hibernate 管理它,要么你自己管理它。如果它被标记为@Transient,则由您来管理该值。
    • 是的,我正在尝试自己管理它,但我没有得到我在那里设置的值,所有其他方法都给了我真正的价值,除了这个方法,因为其他方法已经映射数据库中的列
    • 不适用于列表字段。对于 Collection 类型的字段,hibernate 实际上会创建一个新的中间表。有什么解决方法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2017-04-19
    • 2021-11-22
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多