gpt4 book ai didi

Hibernate 注释以排除基类中的字段

转载 作者:行者123 更新时间:2023-12-02 03:20:57 26 4
gpt4 key购买 nike

我有一个带有四个字段 a、b、c 和 d 的基类和两个扩展它的子类。

我试图确保 SubOne 不会保留字段 d,而 SubTwo 不会保留字段 c。

下面的 xml 映射完美地工作。

这可以使用注释吗?

(Hibernate v3.2.4, JPA 1.0)

public class Base {
private String a;
private String b;
private String c;
private String d;
}

public class SubOne extends Base {
private int id;
}

public class SubTwo extends Base {
private int id;
private String e;
}

映射:
<class name="SubOne" table="SubOne">
<id name="id" column="Id">
<generator class="identity"/>
</id>
<property name="a" column="a" />
<property name="b" column="b" />
<property name="c" column="c" />
</class>

<class name="SubTwo" table="SubTwo">
<id name="id" column="Id">
<generator class="identity"/>
</id>
<property name="a" column="a" />
<property name="b" column="b" />
<property name="d" column="d" />
<property name="e" column="e" />
</class>

子类:
@Entity
@Table(name="SubOne")
public class SubOne extends Base implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

@Override
public String getA() {
return super.getA();
}

@Override
public String getB() {
return super.getB();
}

@Override
public String getC() {
return super.getC();
}

}

最佳答案

是的,你可以做到,但以一种尴尬的方式:

覆盖 getter 方法:

  • SubOne 中的 getD
  • getC 是 SubTwo

  • 将这两个方法注释为 @Transient

    关于Hibernate 注释以排除基类中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497959/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com