如何解决将 Java 类建模为 JPA 中的连接结果
考虑以下数据。这是一个虚构的在线商店系统。 Surcharge
根据不同的商品类别(食物或衣服)和支付方式(现金或信用卡)存储附加费配置。 Packaging
根据商品类别和付款方式存储可用的包装选项。如果您以现金支付食物,抱歉没有为您提供优质包装。
- 下划线表示主键。
Surcharge
和 Packaging
是一对多的关系。我的情况是,我不想有 Surcharge
对象的 4 个实例,每个实例都有一个 List<Packaging>
。我想要 7 个对象,每个对象都持有 category
、paymentMeans
、surcharge
、option
的副本。就像他们加入一样,结果将是 7 行。如何为我的 Java 类建模以实现这一目标?谢谢。
@Entity
@Table(name = "SURCHARGE")
public class Surcharge implements Serializable {
@EmbeddedId
private SurchargeId surchargeId;
@Column(name = "SURCHARGE")
private int surcharge;
// how to map this attribute with packaging table as a single instance?
private Packaging packaging;
}
@Embeddable
public class SurchargeId implements Serializable {
@Column(name = "CATEGORY")
private String category;
@Column(name = "PAYMENT_MEANS")
private String paymentMeans;
}
@Entity
@Table(name = "PACKAGING")
public class Packaging implements Serializable {
@EmbeddedId
private PackagingId packagingId;
}
@Embeddable
public class PackagingId implements Serializable {
@Column(name = "CATEGORY")
private String category;
@Column(name = "PAYMENT_MEANS")
private String paymentMeans;
@Column(name = "OPTION")
private String option;
}
解决方法
在 Surcharge
中,总会有一个 Packaging
的列表。您可以做的是在 Packaging
中有一个 Surcharge 对象。代码如下所示;
@ManyToOne
@JoinColumn(name = "CATEGORY",insertable = false,updatable = false)
@JoinColumn(name = "PAYMENT_MEANS",updatable = false)
private Surcharge surcharge;
如果您不希望那样,您也可以创建一个 DTO 并使用 JPQL 相应地填充它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。