gpt4 book ai didi

java - Hibernate 数据库映射

转载 作者:行者123 更新时间:2023-11-30 04:50:46 26 4
gpt4 key购买 nike

首先,我对 Hibernate 有点陌生。为了了解我在项目中使用的技术。我正在尝试映射以下数据库:

Campaign
campaignId(+)
name

Promotion
campaignId(+)
discount(+)
product
message

我在这两种情况下都用 (+) 表示主键。 Promotion 中的“campaignId”是 Campaign 的外键,用于建模 1:m 映射(一个 Campaign 有许多 Promotions)。使用注释我不知道如何做到这一点。

我真的不想在促销表中添加促销Id,因为它会使数据处理变得很麻烦。当然,这使得桥接表有点棘手。我在使用同时也是主键一部分的外键时也遇到问题。

这可能有映射吗?

<小时/>

好的,我成功了。有点。必须检查坚持是否真的有效。我做了以下事情:

@Entity
@Table(name = "CAMPAIGNS")
@Audited
public class CampaignEntity {
private int campaignId;
private String name;
private List<PromotionEntity> promotions;

public CampaignEntity(int campaignId, String name) {
this.campaignId = campaignId;
this.name = name;
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "cmp_id")
public int getCampaignId() {
return campaignId;
}

public void setCampaignId(int campaignId) {
this.campaignId = campaignId;
}

// Campaign name here... left out to save space

@OneToMany
@JoinColumn(name = "cmp_id")
public List<PromotionEntity> getPromotions() {
return promotions;
}

public void setPromotions(List<PromotionEntity> promotions) {
this.promotions = promotions;
}
}

Promotion 是一个普通映射(毕竟不使用嵌入),其字段为:campaignId、discount、message。 (它也没有 @ManyToOne 注释。)

这有意义吗?

最后,这将是一等奖:如您所见,我正在使用 Envers 来审核整个事情。上面创建了一个相当丑陋的“CampaignEntity_PromotionEntity_AUD”表。我知道这是必要的,但如何将其重命名为 CAMPAIGN_PROMOTION_AUD 呢?

谢谢大家!

<小时/>

我在一个孤独的网站上得到了答案,该网站深深隐藏在 Hibernate 的 Jira 错误跟踪网站的遥远角落:https://hibernate.onjira.com/browse/HHH-3729 .

答案当然是使用@AuditJoinTable(name = "CAMPAIGN_PROMOTION_AUD")。

最佳答案

这是一对多关系及其逆关系的基本示例。

public class Campaign
{
@OneToMany(mappedBy = "campaign)
private List<Promotion> promotions;
}

public class Promotion
{
@ManyToOne
private Campaign campaign;
}

关于java - Hibernate 数据库映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com