我有一个名为BusinessUser
的类,它有一个业务ID,并且有一个名为BusinessData
的对象。在BusinessData
课程中,有ArrayList
个Campaign
个对象,如下所示:
@Embeddable
@Access(AccessType.FIELD)
public class BusinessData {
@Transient
private ArrayList<Campaign> campaigns;
/...
}
在Campaign
类中,有一个业务ID,它应该是引用业务用户表中业务ID列的外键。
@MappedSuperclass
public class Campaign {
@ManyToOne
private long businessId;
/...
}
有没有办法可以将值businessId
映射到businessId
类中的BusinessUser
,而不必让Campaign
持有BusinessUser
个对象?或者我应该只添加一个BusinessUser
对象并以这种方式映射外键?
另外,我不知道我是否错了。如果我必须持有BusinessUser
对象,它将包含一个BusinessData
对象,该对象将包含ArrayList
个Campaign
个对象,其中包含另一个BusinessUser
个对象df = df.groupby(['ticker'])
等等......或者我认为这是一个永无止境的循环我错了吗?
答案 0 :(得分:0)
@Join column(name =&#34; reference_column_name&#34;)注释可以在从某个其他实体引用的类的属性或字段上方使用。
答案 1 :(得分:0)
是的,你错误和正确认为这是一个永无止境的循环,
这是错误的,因为BusinessData
(虽然包含ArrayList<Campaign>
)从数据库中获取了它的数据。
这意味着它可能包含没有BusinessUser
的{{1}}。所以循环停在这里。
但如果BusinessData
中的ArrayList<Campaign>
包含BusinessData
BusinessUser
,那么你是对的。
也就是说,数据库中的循环是相同的。
理论上你可以写一个这样的SQL:
BusinessData
这将为您提供SELECT BU.businessId
FROM BusinessUser BU
INNER JOIN BusinessData BD ON BU.businessId = BD.businessId
INNER JOIN campaigns C ON BD.campaignsId = C.Id
AND C.businessId = BU.businessId
中包含的所有BusinessUser
的结果,这些ArrayList<Campaing>
等于所选的BusinessUser
。
没错,可能需要考虑。
那就是说,你应该再次映射你的Campaign
:
@MappedSuperclass
public class Campaign {
@ManyToOne
private BusinessUser businessUser;
/...
}
private BusinessUser businessUser;
注意!