我对ManyToOne关系有疑问。 假设我有2个豆子:
@Entity
@Table(name = "accounts")
public class Account {
@Id
@Column(name = "account_id")
private int account_id;
}
@Entity
@Table(name = "broker_account")
public class BrokerAccount {
@Id
@Column(name = "broker_account_id")
private int broker_account_id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="account_id", referencedColumnName = "account_id")
private Account account;
}
我正在查询下面的实体(普通获取所有查询)
entityManager.createQuery("from BrokerAccount", BrokerAccount.class)
我认为如果我查询BrokerAccount实体,则默认情况下会在Account对象上填充account_id列,因为它也存在于BrokerAccount表中,但是所有Account字段都是空的。
我是否遗漏了某些内容,我是否应该在BrokerAccount实体本身定义此字段/列以获取其值?
答案 0 :(得分:0)
您已将帐户关联定义为@ManyToOne(fetch = FetchType.LAZY)
。这意味着在执行entityManager.createQuery("from BrokerAccount", BrokerAccount.class)
时,Account
上将不会有联接,并且此时将不会提取其数据。
为了使持久性提供程序获取Account
数据,您需要在同一事务方法中与引用进行交互,例如:brokerAccount.getAccount().getAccountId();
如果您想为fk重复列,您可以这样做:
@Column(name = "account_id", insertable=false, updatable=false)
private int account_id;