我有三个实体:Account
,Partner
和Referral
。
Partner
表已满,并且有一个指向Account
表的链接。
注册用户时,Account
表格已填写。
然后我需要填写Referral
表格,其中包含指向Account
和Partner
的链接。
在这种情况下,我需要检查请求中是否有Referral
链接,我需要检查它是否在Partner
表中并写入ID Referral
Partner
的表格。并从表Account
中获取ID,并将其写入Referral
表。
我有实体和控制器
@Entity
@Table(name = "partner")
public class Partner implements Serializable {
@Id
@Column(name = "id", unique = true, nullable = false)
private Long id;
@OneToOne
@JoinColumn(name = "account_id")
private Account account;
@Column(name = "referral_link", nullable = false, unique = true)
@NotEmpty
private String referralLink;
Getter, Setter, and Constructor
@Entity
@Table(name = "referral")
public class Referral implements Serializable {
@Id
@Column(name = "id", unique = true, nullable = false)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "partner", cascade = CascadeType.ALL)
@JoinColumn(name = "partner_id")
private Set<Partner> partnerId = new HashSet<>();
@OneToOne
@JoinColumn(name = "account_id", nullable = false, unique = true)
private Account accountId;
@Column(name = "device_id")
private String deviceId;
@Column(name = "setup_date", nullable = false)
private Date setupDate;
Getter, Setter, and Constructor
在Controller中,我写了这段代码:
Long defaultId = 6L;
if (referralLink == null) {
referral = new Referral(defaultId, account.getId();
referralService.create(referral);
} else {
List<Partner> partnerList = partnerService.getAll();
if (partnerList.contains(referralLink)) {
// How to get partnerId?
referral = new Referral(partnerId, account.getId();
} else {
referral = new Referral(defaultId, account.getId();
referralService.create(referral);
}
referralService.create(referral);
}
结果出现了许多问题:
如何在referralLink
所属的工作表上获取元素的ID?
如果referralLink
为空,如何添加默认ID?
创建Referral
时,他要求我提供实体Account
而不是我的Long
和Set
合作伙伴,我做错了什么?
答案 0 :(得分:0)
你有很多问题,
首先在你的Refferal课程中
@OneToMany(fetch = FetchType.LAZY, mappedBy = "partner", cascade = CascadeType.ALL)
@JoinColumn(name = "partner_id")
private Set<Partner> partnerId = new HashSet<>();
你不能在关系的两边有JoinColumn,因为这是一个双向关系,你应该在一边有joincolumn而在另一边有mappedBy。
在你的持久性逻辑中,你应该在另一方面引用关系的每一面,因为关系是双向的,我说的是Refferal和Partner。
如何获取referralLink所属的工作表上的元素ID 到?
我不确定你的内容是什么意思,但我想这是与合作伙伴有联系的实体,在这种情况下你只需找到特定referralLink的合作伙伴并使用普通的简单getter
如果referralLink为空,如何添加默认ID?
只需检查referralLink是否为空并添加一个id,如果你正在谈论autogeneratedId那么为什么你需要添加这样的东西,即使你这样做也会被忽略,如果你在谈论另一个的id entity(外键)设置referralLink所需的实体。
创建推荐时,他要求我提供实体帐户而不是 我的Long和Set合作伙伴,我做错了什么?
在您的推介实体中,您指定的帐户不是空约束
@OneToOne
@JoinColumn(name = "account_id", nullable = false, unique = true)
private Account accountId;
所以只需删除&#34; nullable = false&#34;