Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
JPA搜索子类_Jpa - Fatal编程技术网

JPA搜索子类

JPA搜索子类,jpa,Jpa,在JPA中,如何编写查询以加载子类。例如,我需要一个查询来加载paymentSet,其中包含CashPayment(如果有的话)和CheckPayment(如果有的话) 谢谢 class SalesOrder { Set<Payment> paymentSet; } class Payment {}; class CashPayment extends Payment; class CheckPayment extends Payment; class销售订单{ 设置工资设置;

在JPA中,如何编写查询以加载子类。例如,我需要一个查询来加载paymentSet,其中包含CashPayment(如果有的话)和CheckPayment(如果有的话)

谢谢

class SalesOrder {
  Set<Payment> paymentSet;
}
class Payment {};
class CashPayment extends Payment;
class CheckPayment extends Payment;
class销售订单{
设置工资设置;
}
类别付款{};
类现金支付延期支付;
类支票支付扩展支付;

您需要映射继承关系。我参考文档:。您还可以浏览与“jpa继承”相关的stackoverflow问题。

如何解决此问题取决于您对数据库的建模方式。这是非常好的,看看有什么选择。一个选项是将所有的
付款
存储在同一个表中,但提供一个指示应加载哪个具体类的参数。例如:

@Entity
@Inheritance
@DiscriminatorColumn(name="PAYMENT_TYPE")
@Table(name="PAYMENT")
class Payment {
  @Id
  private long id;
  //...
}

@Entity
@DiscriminatorValue("CASH")
class CashPayment extends Payment {
}

@Entity
@DiscriminatorValue("CHECK")
class CheckPayment extends Payment {
}