当前位置: 首页 > 面试题库 >

具有接口属性的JPA实体,可以吗?

鲜于海
2023-03-14
问题内容

我有以下实体:

@Entity
public class TestCaseStep implements JPAEntity<Integer> {

        ...

    @Column(name="STEP_NUMBER")
    private Integer stepNumber;

    @Enumerated(EnumType.STRING)
    @Column(name="ACTION")
    private Action action;

    **@ManyToOne
    @JoinColumn(name="connector")
    private ScriptItem connector;**

我的属性ScriptItem是其他3个类的接口。是否可以将JPA配置为在运行时执行时设置正确的类ID?

其他资源:

public interface ScriptItem {

    String getValue();
    ScriptItemType getType();
}

@Entity
@Table(name="DAT_FEED_XML")
public class FeedXml implements JPAEntity<Integer>, ScriptItem {
    ...
}

@Entity
@Table(name="DAT_DB_STMT")
public class DbStatement implements JPAEntity<Integer>, ScriptItem {
       ...
}

我应该使用哪些注释来让JPA理解要保存3个类之一的ID?

提前致谢,


问题答案:

这确实是一个好主意,但不幸的是,JPA不支持将接口直接映射为实体属性。

您只能映射直接用注释的顶级类@Entity。这个顶级类可以实现一个接口。

这个功能已经被要求并讨论了很长时间。

根据您要完成的工作,可以使用按表分类策略的@Inheritance注释。

希望对您有所帮助。



 类似资料:
  • 问题内容: 说,我有以下实体: 通过结合使用模式自动生成功能,我得到了一个附加表,其中包含和之间的映射。但是,我想实现通过添加一个一对多的关系的 编号 为( 例如,没有附加表 )。 这可能吗?如果是,我应该使用什么注释来创建这种映射? 问题答案: 通常,使用@JoinColumn批注是可能的。它也适用于可嵌入对象。 如果您对embeddable中指定的列的A_ID名称不满意,则可以覆盖实体A中的列

  • 问题内容: 在我们的hibernate项目中,使用java bean模式对实体进行编码。在我们的代码中,有很多地方有人忘记了设置变量的设置,但由于NOT NULL字段而导致异常。 是否有人在使用构建器来构建其实体或使其不可变? 我正在尝试找到一种不是Java bean模式样式的有效模式。 谢谢 问题答案: 如果使Bean不可变,则必须使用字段级访问,并且这附带了它自己的一系列问题,在此进行了详细讨

  • 早上好 我正在使用ModelMapper将DTO映射到实体,反之亦然,与此相关,我有一个问题。 1)当我从SonController获取SonDTO时,我需要将长的motherId映射到实体Son,但在那里我有实体mothermother来建立关系,它在内部有id。那么我如何将这个SonDTO motherId映射到实体mothermother中,反之亦然? 类以下:

  • 问题内容: 我知道一个接口就像一个100%纯的抽象类。因此,它不能包含方法实现。但是,我看到了一个奇怪的代码。有人可以解释吗? 代码段: 编辑: 我的IDE是Intellij Idea 13.1。项目SDK是Java 7 <1.7.0_25>。IDE未显示任何编译器错误。但是,当我在命令行上编译代码时,我收到以下消息。 问题答案: 在 Java 8 中,除了默认方法外,您还可以在接口中定义静态方法

  • 我正在使用jpa 2.1 EntityGraphs来修改不同的jpa查询,在某些情况下,EntityGraph不能按预期工作。我正在努力解决的简单用例是: 作者作为父类,与Book子类具有单向一对多关系,我想检索给定书名的作者结果,类似于findAllAuthorsByBookName。 我的作者类是这样的 书没有引用作者,所以它看起来像这样 Generic Entity类仅具有id和name属性

  • 我有一个包含元素列表的实体,现在我想搜索这些元素的属性。这个约束应该是“与”连接的。请看这些简单的例子: 现在我想找到某个城市的家长,比如说“BigCity”,孩子们在学校“AwesomeSchool”,他们在六年级一班。我只想通过CriteriaBuilder获得搜索结果。 到目前为止,我得到了: 不幸的是,这里有两个问题:-看起来我无法在列表属性上调用-这将返回所有孩子在“AwesomeSch