当前位置: 首页 > 知识库问答 >
问题:

Hibernate Embeddables:找不到组件属性

司徒经纶
2023-03-14
@MappedSuperclass
public abstract class A {
    @Id
    @GeneratedValue
    long id;
}

@Embeddable
public class B extends A {

}

@Entity
public class C extends A {
    B b;
}

奇怪的是,即使是这种变体

@Entity
public class C extends A {
    @Embedded
    @AttributeOverrides( {
        @AttributeOverride(name="id", column = @Column(name="b_id") ),
    } )
    B b;
}

我还是得到同样的错误。

共有1个答案

燕扬
2023-03-14

命名策略配置已更改。Spring Boot文档中的新方法如下:

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl

此外,您不能在@embeddable中使用@id。因此,我为嵌入创建了一个单独的@MappedSuperClass:

@MappedSuperclass
public abstract class A {
    @Id
    @GeneratedValue
    long id;
}

@MappedSuperclass
public abstract class E {
    @GeneratedValue
    long id;
}

@Embeddable
public class B extends E {

}

@Entity
public class C extends A {
    B b;
}

这样,表c就有两列idb_id。缺点当然是AE引入了一些冗余。非常欢迎对此采取干巴巴方法的评论。

 类似资料:
  • 我正在使用typecript和vue。 在我的应用程序中有一个,它对每个子组件都是全局的。 我在vue JS上找到了本机vue解决方案,将此属性注入子组件。 在main.ts 在任何typescript vue组件上 这样我就可以在我的子组件上获得注入的

  • 我试图运行Webpack上的一个项目和我得到多个错误 我应该安装我所有的打字,所以我不知道这些是从哪里来的。我试图从一个编译的项目中复制package.json,但没有帮助。我错过了什么? 我的tConfig看起来像这样

  • 我试着寻找类似的问题,但没有成功。 谢谢!

  • 问题内容: 我在程序中使用以下代码来加载属性文件: 该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题? 更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。 问题答案: Balus

  • 问题内容: 我们将Java blazeedshibernate与flex项目集成在一起。首先,我们在eclipse中测试了纯Javahibernate,并且执行良好。但是,当我们将相同的东西放入tomcat中进行火焰集成时,它会显示以下错误,这是唯一的错误。 这是hibernate.cfg.xml(要识别是否未找到hibernate.cfg.xml,我通过删除.cfg.xml的DOCTYPE进行测

  • 我正在使用gradle来构建和测试我的应用程序。我使用命令 但是当从eclipse中运行时,测试工作完美,当使用gradle运行时失败。我的测试定义如下,它找不到的属性文件在这两个文件夹中: /home/user/Development/git/myproject/src/main/java/com/mycompany/config/home/user/Development/git/myproj