我有两个实体Customer
和Account
。JPA原生查询(SQL视图)
@Entity
@Table(name="customer")
public class Customer
{
private Long id;
private String name;
private Long accountId;
private String accountType;
private String accountName;
...
}
@Entity
@Table(name="account")
public class Account
{
private Long id;
private String accountName;
private String accountType;
...
}
我有一个SQL查询:
select
a.id as account_id,
a.account_name,
a.account_type,
d.id,
d.name
from account a,
customer d`
where d.account_id = a.id
假设在应用程序启动
account
和customer
表在数据库中创建。accountType
和accountName
客户实体的字段不应该在数据库中创建。也就是说,客户数据库表中将只创建id
和name
列。
问题
如何运行上面的SQL查询,并与accountType
和accountName
性填充了SQL查询的ACCOUNT_NAME和ACCOUNT_TYPE值返回Customer
实体。
你可以去休眠吗? – ssedano
我真的不明白你的问题。这些“假设”是什么?这是你想如何工作的代码?你不想坚持Customer实体的'accountType'和'accountName'属性? ('@ Transient'?)你想让这些属性成为组合PK的一部分吗?客户和账户之间的关系是什么?你的SQL查询将返回这种形式的笛卡尔产品(这些实体之间没有关联)... –
accountType和accountName不是复合Pk,我使用id作为主键。我已更新该帖子。就像你说的那样,Customer实体的accountType和accountName属性是@Transient。客户实体具有对账户实体的引用。我想从数据库中检索客户实体,该客户实体不包含帐户实体,但包含其在数据库中引用的帐户记录的帐户类型和帐户名称。如果您有更好的方式获得这两个属性,请分享它。谢谢 –