Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 在对每个类使用Hibernate表时,如何防止为基类创建表?_Java_Hibernate - Fatal编程技术网

Java 在对每个类使用Hibernate表时,如何防止为基类创建表?

Java 在对每个类使用Hibernate表时,如何防止为基类创建表?,java,hibernate,Java,Hibernate,我有两个类:基类和扩展基类的ExtendedClass。我希望使用Hibernate将ExtendedClass持久化为一个DB表,并且希望它也持久化基类中的所有字段 我想我想使用每类表范例,但是我不想Hibernate为基类创建DB表(我也不想向基类添加@Id)。有没有办法抑制这种情况 我正在做这样的事情: @Entity class BaseClass { int value1; } @Entity @Table(name="extendedClasses") @Inheritance

我有两个类:基类和扩展基类的ExtendedClass。我希望使用Hibernate将ExtendedClass持久化为一个DB表,并且希望它也持久化基类中的所有字段

我想我想使用每类表范例,但是我不想Hibernate为基类创建DB表(我也不想向基类添加@Id)。有没有办法抑制这种情况

我正在做这样的事情:

@Entity
class BaseClass {
  int value1;
}

@Entity
@Table(name="extendedClasses")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
class ExtendedClass extends BaseClass {
  @Id long id;
  int value2;
}
table extendedClasses
(
 long id
 int value1
 int value2
)
我希望DB有一个这样的表:

@Entity
class BaseClass {
  int value1;
}

@Entity
@Table(name="extendedClasses")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
class ExtendedClass extends BaseClass {
  @Id long id;
  int value2;
}
table extendedClasses
(
 long id
 int value1
 int value2
)

尝试将基类标记为抽象类

@Entity
abstract class BaseClass {
  int value1;
}

尝试将基类标记为抽象类

@Entity
abstract class BaseClass {
  int value1;
}

要停止hibernate在DB中创建表,请将此添加到persistence.xml

<property name="hibernate.hbm2ddl.auto" value="validate" />


我不知道基类和子类的具体情况。

要停止hibernate在DB中创建表,请将此添加到persistence.xml

<property name="hibernate.hbm2ddl.auto" value="validate" />


我不知道基类和子类的具体情况。

如果在基类上放置
@Entity
,则必须定义一个id,该id将在数据库中生成一个表


@Entity
替换为
@MappedSuperclass
将产生所需的结果。

如果将
@Entity
放在基类上,则必须定义一个id,该id将在数据库中生成一个表


@Entity
替换为
@MappedSuperclass
会产生所需的结果。

我想说的是不要将基类注释为一个实体。我试过了,但如果没有实体,基类字段将无法持久化。我也尝试过嵌入,但也不起作用。我想说的是,不要将基类注释为实体。我尝试过,但如果没有实体,基类字段将无法持久化。我也试过了,但也没用。谢谢。。。我读到这会有用,但不幸的是我需要在代码中实例化基类。谢谢。。。我读过这篇文章,但不幸的是,我需要在代码中实例化基类。谢谢,但如果没有@Entity注释,它将无法持久化基类字段。当我尝试添加这两个字段时,我得到“由引起:org.hibernate.AnnotationException:不能同时使用@Entity和@MappedSuperclass注释实体”是否有其他解决方案?谢谢,但是如果没有@Entity注释,它将无法持久化基类字段。当我尝试添加这两个字段时,我得到“原因:org.hibernate.AnnotationException:无法同时使用@Entity和@MappedSuperclass注释实体”是否有其他解决方案?谢谢,但是我确实希望它为ExtendedClass创建一个表谢谢,但是我确实希望它为ExtendedClass创建一个表