Ich habe 2 Tabellen prod (Waren) mithql Join konnte die Eigenschaft nicht auflösen; verwenden zwei Tabellen-Mapping
> id, catid(category), name, price
Und Katze
> with id, catname.
ich wählen möchte, wie dies in SQL
> select * from cat join prod on cat.id=prod.catid where
> cat.name='catname';
Meine Frage ist;
Query query = session.createQuery("from prod pr join pr.cat ct with pr.catid=ct.id where ct.name=?");
Ich habe
konnte nicht lösen Eigenschaft: Katze: goods.prod [von goods.prod pr verbinden pr.cat ct mit pr.catid = ct.id wo ct.name =?]
fehler und in indexservice.java ich habe import goods.cat unbenutzt. Aber warum? Wenn ich Funktion schrieb, um goods.prod zu verwenden, das goods.cat importiert. Ok. Das war ohne Zuordnung. Ich füge diese in cat.java
**cat.java**
package goods;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import goods.prod;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="cat")
public class cat implements Serializable {
private Integer id;
@Id @GeneratedValue
@Column(name="id")
@OneToMany
@JoinColumn(name="catid", referencedColumnName="id")
private List<prod> prods;
private static final long serialVersionUID = -4147058093508047162L;
private String Name;
public cat() {
}
public cat(int id, String Name) {
this.id = id;
this.Name = Name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
}
prod.java
package goods;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import goods.cat;
import java.io.Serializable;
@Entity
@Table(name = "prod")
public class prod implements Serializable {
@Id @GeneratedValue
@Column(name = "catid")
private Long id;
private Integer catid;
private String name;
private Integer price;
public prod() {
}
public prod(Long id, Integer catid, String name, Integer price) {
this.id = id;
this.catid = catid;
this.name = name ;
this.price = price;
}
public Long getid() {
return id;
}
public void setid(Long id) {
this.id = id;
}
public Integer getcatid() {
return catid;
}
public void setcatid(Integer catid) {
this.catid = catid;
}
public String getname() {
return name;
}
public void setname(String name) {
this.name = name;
}
public Integer getprice() {
return price;
}
public void setprice(Integer price) {
this.price = price;
}
}
IndexService.java
import goods.prod;
import goods.cat;
@SuppressWarnings("unchecked")
public static ArrayList<prod> getListOfProds(String catname,String name,Integer pricel, Integer priceh){
ArrayList<prod> list = new ArrayList<prod>();
Session session = HibernateUtil.openSession();
Transaction tx = null;
try {
tx = session.getTransaction();
tx.begin();
Query query = session.createQuery("from prod pr join pr.cat ct with pr.catid=ct.id where ct.name=?");
//Query query = session.createQuery("from prod pr join pr.cat ct with pr.catid=ct.id where ct.name=?");
query.setString(0, catname);
//query.setInteger(1, pricel);
//query.setInteger(2, priceh);
list = (ArrayList<prod>) query.list();
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return list;
}
Danke, aber wie kann ich Objekt Katze zuordnen? cat wird nicht zugeordnet [FROM goods.prod pr, cat ct WHERE pr.catid = ct.id UND ct.name =?] – ifooi
Anstelle von catId als Eigenschaft Ihrer Prod-Klasse verwenden Sie eine private Katze; –
Wie kann ich anstelle von catid verwenden, wenn ich dies in db habe? Ich entferne catid und Setter/Getter und ändere es in private Katze Katze/ich bekomme Unbekannte Spalte 'prod0_.cat' in 'Feldliste' – ifooi