3

我想在 JPA 中进行此查询:

SELECT * FROM `happyDB`.`users` U WHERE U.party_as_user =1 AND U.party_party_id =2

这工作正常,但我的问题是我Party只有一个对象,而不是一个 id,我不能让它工作。

Users我尝试执行命名查询的 -entity 中,我有以下内容:

@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-object内部有一个名为的属性Party,但它不起作用。是否有任何解决方案,或者我是否必须向 Users-bean 添加一个属性,private int partyID并在每次Party插入新属性时填充它Users

感谢您的帮助!萨米努尔米

4

1 回答 1

10

一般来说,您可以在 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 查询。

于 2012-04-16T13:58:12.237 回答