Doszedłem do tego:
//Klasa Dane
Kopiuj
@Entity
public class HibernateData{
private int EmpID;
private String EmpFirstName;
private String EmpLastName;
private String EmpTel;
private String EmpWorker;
private int EmpAge;
private String EmpDep;
private HibernateDataDetail team;
public HibernateData(){}
@Id
@GeneratedValue
public int getEmpID() {
return EmpID;
}
public void setEmpID(int empID) {
EmpID = empID;
}
public String getEmpFirstName() {
return EmpFirstName;
}
public void setEmpFirstName(String empFirstName) {
EmpFirstName = empFirstName;
}
public String getEmpLastName() {
return EmpLastName;
}
public void setEmpLastName(String empLastName) {
EmpLastName = empLastName;
}
public String getEmpTel() {
return EmpTel;
}
public void setEmpTel(String empTel) {
EmpTel = empTel;
}
public String getEmpWorker() {
return EmpWorker;
}
public void setEmpWorker(String empWorker) {
EmpWorker = empWorker;
}
public int getEmpAge() {
return EmpAge;
}
public void setEmpAge(int empAge) {
EmpAge = empAge;
}
public String getEmpDep() {
return EmpDep;
}
public void setEmpDep(String empDep) {
EmpDep = empDep;
}
@ManyToOne
@JoinColumn(name="TeamNameID")
public HibernateDataDetail getTeam() {
return team;
}
public void setTeam(HibernateDataDetail team) {
this.team = team;
}
}
Klasa detale:
Kopiuj
@Entity
public class HibernateDataDetail {
private int TeamID;
private String TeamName;
private List<HibernateData> Employee;
public HibernateDataDetail (){}
@Id
@GeneratedValue
public int getTeamID() {
return TeamID;
}
public void setTeamID(int teamID) {
TeamID = teamID;
}
public String getTeamName() {
return TeamName;
}
public void setTeamName(String teamName) {
TeamName = teamName;
}
@OneToMany(targetEntity=HibernateData.class,mappedBy="team",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
public List<HibernateData> getEmployee() {
return Employee;
}
public void setEmployee(List<HibernateData> employee) {
Employee = employee;
}
}
W bazie powstały 2 tabele:
Dane: empID, empAge, empDep, empFirstName, empLastName, empTel, empWorker, TeamName
oraz DaneDetail: TeamID, TeamName
później stworzyłem w swingu formularz ktory pobiera dane i przekazuje do funkcji ta tworzy kryteria:
Kopiuj
Criteria crit = session.createCriteria(HibernateData.class,"hd")
.createCriteria("HibernateDataDetail","hdd");
Conjunction con = Restrictions.conjunction();
if(Id.isEmpty()==false){
ID = Integer.parseInt(Id);
con.add(Restrictions.eq("hd.EmpID",ID));
}
if(Fname.isEmpty()==false)
con.add(Restrictions.ilike("hd.EmpFirstName",Fname));
if(Lname.isEmpty()==false)
con.add(Restrictions.ilike("hd.EmpLastName",Lname));
if(Tel.isEmpty()==false)
con.add(Restrictions.ilike("hd.EmpTel",Tel));
if(Age.isEmpty()==false){
Age1 = Integer.parseInt(Age);
con.add(Restrictions.eq("hd.EmpAge",Age1));
}
if(bolworker==false)
con.add(Restrictions.eq("hd.EmpWorker",Worker));
if(boldep==false)
con.add(Restrictions.eq("hd.EmpDep",Dep));
if(bolteam==false)
con.add(Restrictions.eq("hdd.TeamName",Team));
critDetail.add(con);
List<HibernateData> lista = critDetail.list();
for(HibernateDatafData : lista){
HibernateData r = new HibernateData();
results.add(r);
}
W zamian dostaje wyjątek:
Kopiuj
Exception in thread "AWT-EventQueue-0" org.hibernate.QueryException: could not resolve property: HibernateDataDetail of: org.main.Hibernate.HibernateData
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1375)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathEntityName(CriteriaQueryTranslator.java:227)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.createCriteriaEntityNameMap(CriteriaQueryTranslator.java:214)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.<init>(CriteriaQueryTranslator.java:104)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:82)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1578)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at org.hibernate.impl.CriteriaImpl$Subcriteria.list(CriteriaImpl.java:481)
at org.main.Hibernate.ModData.findbutton(ModData.java:189)
at org.main.Hibernate.ModData$2.actionPerformed(ModData.java:90)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
słabo się znam na relacjach wiec plz help ;]