我想在JPA中进行此查询:
SELECT * FROM `happyDB`.`users` U WHERE U.party_as_user =1 AND U.party_party_id =2
这工作正常,但我的问题是我只将Party
作为对象,而不是id,我无法使其正常工作。
在Users
- 我尝试执行命名查询的实体中,我有以下内容:
@JoinColumn(name = "pary_party_id", referencedColumnName = "party_id")
@ManyToOne
private Party partyId;
@Column(name = "party_as_user")
private Boolean partyAsUser;
我试图将它实现为带点符号的对象,但这不起作用:
@NamedQuery(name = "Users.findByPartyAsUser", query = "SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.partyId.partyId = :partyId")
partyId
- 对象中有一个名为Party
的属性,但它不起作用。是否有任何解决方案,或者我是否必须将一个属性添加到Users-bean,如private int partyID
,并在每次将新Party
插入Users
时填充它?
感谢您的帮助! 萨米努尔米
答案 0 :(得分:9)
通常,您可以在JPA中使用对象作为参数,
SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.party = :party
Party party = new Party(id);
query.setParameter("party", party);
但是,如果使用正确的变量名称,那么你的工作应该有用,我猜是
SELECT u FROM Users u WHERE u.partyAsUser = :partyAsUser AND u.party.id = :id
如果您比对象更了解SQL,则可以始终使用本机SQL查询。