我正在使用Hibernate注释,我试图解决的问题如下:
我需要有2个不同的@Entity类具有相同的列映射,但具有不同的标识符。
第一个应该使用id作为标识符。
第二个应使用名称作为标识符。
因此,我有一个抽象类,用@MappedSuperclass进行注释,这些@MappedSuperclass具有包括id和name在内的所有列,此外还有2个@Entity类,这些类扩展了超类并覆盖了id和name的getters。
@MappedSuperclass
public class MappingBase {
protected Integer id;
protected String name;
@Column (name = "ID")
public void getId() {
return this.id;
}
@Column (name = "NAME")
public void getName() {
return this.name;
}
}
@Entity
@Table (name = "TABLE")
public class Entity1 extends MappingBase {
@Id
@Column (name = "ID")
public void getId() {
return this.id;
}
}
@Entity
@Table (name = "TABLE")
public class Entity2 extends MappingBase {
@Id
@Column (name = "NAME")
public void getName() {
return this.name;
}
}
注意:我必须在超类中包含成员(id,name)。我知道我可以将@Transient添加到id和name getter中,但这意味着我必须在每个类中都添加它们,这不是一个好的设计:(此外,以下insertable=“false,updateable=“false”可能会有所帮助,但我不明白这是什么意思。。。
请帮帮我!
试试这个样品,
Hibernate–@MappedSuperclass如何重写列标识符
最好将基类定义为@Embeddable并在实现类中使用@Embedded并使用@AttributeOverride。
Hibernate/JPA允许我们注释属性或访问器。如果属性上有@Id
注释,JPA将查找该类的所有属性。类似地,如果我们在getter方法上有@id
注释,JPA将查找所有getter。
我们可以通过注释属性来解决上述问题。超类和两个子类如下:-
@MappedSuperclass
public abstract class AbstractMappingBase {
//properties other than id and name
public abstract Integer getId();
public abstract String getName();
//other getters and setters
}
@Entity
public class Entity1 extends AbstractMappingBase {
@Id
private Integer id;
private String name;
@Override
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Entity2 extends AbstractMappingBase {
private Integer id;
@Id
private String name;
@Override
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这里JPA将寻找属性而不是getter。超类和它的子类之间没有重复的属性。所以它会很好地工作。
问题内容: 我正在考虑使用注释来定义我的Hibernate映射,但是遇到了一个问题:我想使用基础实体类来定义公共字段(包括ID字段),但是我希望不同的表具有不同的ID生成策略: 有什么办法可以做到这一点?我曾尝试将以下内容包含进来,但hibernate状态是我两次反对同一栏,这似乎是错误的: 问题答案: 在上面的代码中,您似乎在混合字段(超类)和方法(子类)的注释。Hibernate 参考文档建议
我们正在使用Hibernate生成销售报告。 脚本 当用户在输入一些条件后点击生成报告按钮时,我正在使用Hibernate状态从数据库中获取数据,然后我们正在进行一些数据操作以生成实际的报告数据。报告数据存储在ArrayList中,然后保存到与Hibernate实体映射的数据库中,如下图所示 CommusionSummary。JAVA 每个月都会生成报告。我的问题是:2012年7月5日,用户已经生
问题内容: 在Hibernate中如何注释Blob列?到目前为止,我有一堂课,有: 问题答案: @Lob应该可以解决blob和clob(使用String作为类型)
提前谢了。
我试图将某些方法排除在单元测试覆盖范围之外。我之所以使用Cobertura,是因为我发现从2.0版开始,他们引入了一个用于排除方法和类的覆盖忽略注释:https://github.com/Cobertura/Cobertura/wiki/covered-annotations
我正在使用来衡量我的测试的代码覆盖率。我已经启用了分支机构覆盖,但我不能完全理解该报告。 没有分支保险,我得到100%的保险: 启用分支覆盖: 有问题的来源可以在这里找到。 <代码>21- 然而,<代码>53-