Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个Java实体是否可以;有一个;关系使用相同的表_Java_Spring_Hibernate_Jpa - Fatal编程技术网

两个Java实体是否可以;有一个;关系使用相同的表

两个Java实体是否可以;有一个;关系使用相同的表,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有两张表A和表B: @Entity public class A { } @Entity public class B { private final A a; private String someBSpecificField; } 实体A已经很好地编码并映射到现有表。我的工作是创建B,出于某种原因,我更喜欢A和B之间的组合而不是继承。同时,我希望A和B有一个表,以避免在读取时连接。我可以这样做吗: @Entity @Table(name = "a")

我有两张表A和表B:

@Entity
public class A {
}

@Entity
public class B {
    private final A a;
    private String someBSpecificField;
}
实体A已经很好地编码并映射到现有表。我的工作是创建B,出于某种原因,我更喜欢A和B之间的组合而不是继承。同时,我希望A和B有一个表,以避免在读取时连接。我可以这样做吗:

@Entity
@Table(name = "a")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "a_type_enum", discriminatorType = 
   DiscriminatorType.INTEGER)
@DiscriminatorValue("100")
 public class A {
 }
    
  @Entity
  @Table(name = "a")
  @DiscriminatorValue("500")
  public class B {
      private final A a;
      private String someBSpecificField;
  }

如果类型是复杂对象,则需要使用
@embeddeble
注释该类型,并在
@Entity
类中使用它


如果要覆盖
@embeddeble
类的属性名称,使它们具有不同的列名,可以使用
@AttributeOverrides
注释来实现。如果类型是复杂对象,则需要使用
@embeddeble
注释该类型,并在
@Entity
类中使用它


如果您想覆盖
@embeddeble
类的属性名称,使它们具有不同的列名,您可以使用
@AttributeOverrides
注释来实现。

您能否详细说明一下“我希望a和B有一个表,以避免在读取时连接”?您能否详细说明一下“我希望A和B有一个单独的表,以避免在读取时连接“?实体A不可嵌入,它用@Entity注释,你的意思是我可以嵌入一个完整的实体而不注释它@Embeddeble吗?注释B类@Embeddeble。”。将它嵌入实体类实体A不可嵌入,它用@Entity注释,你的意思是我可以嵌入一个完整的实体而不注释它@Embeddeble?注释类B@Embeddeble。并将其嵌入实体类中