【问题标题】:How to write named native subqueries in JPA?如何在 JPA 中编写命名本机子查询?
【发布时间】:2011-07-26 06:11:45
【问题描述】:

我的任务是编写一个命名的本机子查询,例如

select c.comp_name from company c where c.cid = (select cid from com_usr_rel where uid=1100)

实体是

公司

@Entity

public class Company implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="company_id")
private String companyId;

@Column(name="apartment_no")
private BigDecimal apartmentNo;

private String city;

@Column(name="company_name")
private String companyName;

//bi-directional many-to-one association to CompanyUser
@OneToMany(mappedBy="company")
private List<CompanyUser> companyUsers;

public Company() {
}

public String getCompanyId() {
return this.companyId;
}

public void setCompanyId(String companyId) {
this.companyId = companyId;
}

public BigDecimal getApartmentNo() {
return this.apartmentNo;
}

public void setApartmentNo(BigDecimal apartmentNo) {
this.apartmentNo = apartmentNo;
}

public String getCity() {
return this.city;
}

public void setCity(String city) {
this.city = city;
}

public String getCompanyName() {
return this.companyName;
}

public void setCompanyName(String companyName) {
this.companyName = companyName;
}

public List<CompanyUser> getCompanyUsers() {
return this.companyUsers;
}

public void setCompanyUsers(List<CompanyUser> companyUsers) {
this.companyUsers = companyUsers;
}}

com_usr_rel

@Entity
@Table(name="com_usr_rel")
public class CompanyUser implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="com_usr_rel_id")
private String comUserId;

//bi-directional many-to-one association to Company
@ManyToOne
@JoinColumn(name="company_id")
private Company company;

//bi-directional many-to-one association to User
@ManyToOne
@JoinColumn(name="user_id")
private User user;

public CompanyUser() {
}

public String getCom_usr_relId() {
return this.comUserId;
}

public void setCom_usr_relId(String com_usr_relId) {
this.comUserId = comUserId;
}

public Company getCompany() {
return this.company;
}

public void setCompany(Company company) {
this.company = company;
}

public User getUser() {
return this.user;
}

public void setUser(User user) {
this.user = user;
}
}

@更新 哎呀。

命名本机查询不执行。它给了我一个例外,说不支持本机标量查询。

org.hibernate.cfg.NotYetImplementedException: Pure native scalar queries are not yet supported

@更新

通过使用实体中的关系来解决它。

【问题讨论】:

  • 你没有问问题。您发布的本机查询不起作用吗?您是在问如何指定 @NativeNamedQuery 注释吗? ...?请详细说明。

标签: hibernate jpa openjpa


【解决方案1】:

这个doesn't work似乎在休眠

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 2014-11-11
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2011-03-22
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多