使用spring mvc

时间:2017-05-25 08:58:28

标签: java spring spring-mvc

我有三个实体:AccountPartnerReferral

Partner表已满,并且有一个指向Account表的链接。

注册用户时,Account表格已填写。

然后我需要填写Referral表格,其中包含指向AccountPartner的链接。

在这种情况下,我需要检查请求中是否有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而不是我的LongSet合作伙伴,我做错了什么?

1 个答案:

答案 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;