我在JPQL查询初学者,我不明白我怎么可以翻译JPQL查询的SQL查询:JPQL查询的Java EE项目
我有2个表:
- 客户(idCustomer,...,idMacroMarket)
- MacroMarket(idMacroMarket,nameMacroMarket ...)
这些表格与关系@ManytoOne(用于客户)和 @OneToMany(用于MacroMarket)关联。
SQL查询:
SELECT nameMacroSegment FROM Macro_market m
INNER JOIN Customer c ON c.idMacroMarket = m.idMacroMarket
WHERE idCustomer = id;
JPQL查询:
SELECT nameMacroSegment FROM Macro_market m
...
...
WHERE idCustomer = :id
实体
@Entity
@Table(name="macro_market")
public class Macro_market implements Serializable {
private static final long serialVersionUID = 1L;
/** ATTRIBUTES **/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idMacroMarket;
private String nameMacroSegment;
private String nameMarketSegment;
@OneToMany(mappedBy="macMar")
private List<Customer> customers;
...
...
@Entity
@Table(name="customer")
public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idCustomer;
...
...
/** RELATIONS **/
// CUSTOMER - MACRO_MARKET
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idMacroMarket",referencedColumnName="idMacroMarket")
private Macro_market macMar;
感谢您的swers。
这可能工作: SELECT m.nameMacroSegment FROM Macro_market米,m.customersÇ WHERE c.idCustomer =:ID – kostja 2013-03-26 11:42:13
@kostja:确定用于请求,但现在,我有此错误:m.customers是不映射[SELECT m.nameMacroSegment FROM com.CustomerRequirement.entities.Macro_market m,m.customers c WHERE c.idCustomer =:id] – 2013-03-26 12:29:56
我刚猜测你的映射可能看起来像什么。我假设'MakroMarket'与'Customer'具有'OneToMany'关系,因此它可能被称为'customers'。您应该使用该字段的实际名称。 PS - 如果你发布了两个实体的代码 - 只有相关部分 - 类声明,成员,注释,没有方法,没有评论,这将会有所帮助。 – kostja 2013-03-26 12:34:55