2016-05-22 24 views
0
nicht beheben

Ich bin neu in Spring MVC und Hibernate und ich stieß auf ein Problem. Ich habe Child-Tabelle erstellen von Hibernate, die mit User-Tabelle (viele zu eins) verbunden ist. Wenn Hibernate die Child-Tabelle erstellt, wird automatisch 'user_object_id' hinzugefügt - durch 'user_object' (type User) sind diese beiden Tabellen verbunden. Aber wenn ich auf Benutzer zeigen möge nur seine Kinder gibt es ein Problem:HTTP-Status 500 - Anforderungsverarbeitung fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.QueryException: konnte Eigenschaft

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.QueryException: 
could not resolve property: user_object_id of: com.websystique.springmvc.model.Child 

ich Child-Objekt aus der Tabelle in ChildDaoImpl Klasse in findAllUserChilds Methode, und dann Karte in ChildDTO (POJO-Objekt) in ChildController. Der Fehler ist im Child-Modell mit 'user_object_id' verbunden, da diese Variable dort nicht existiert, da sie automatisch von Hibernate erstellt und in findAllUserChilds() von Criteria zurückgegeben wird. Wie kann ich dieses Problem lösen?

Kind:

@Entity 
@Table(name= "Child") 
public class Child implements Serializable 
{ 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private int id; 

@Column (nullable=false) 
private String first_name; 

@Column (nullable=false) 
private String last_name; 

@Column (nullable=false) 
private String birth_city; 

@Column (nullable=false) 
private String pesel; 

@Column (nullable=false) 
private String sex; 

@Column (nullable=false) 
private String blood_group; 

@Column (nullable=false) 
private String birth_date; 


@ManyToOne 
private User user_object; 

public User getUser_object() { 
    return user_object; 
} 

public void setUser_object(User user_object) { 
    this.user_object = user_object; 
} 

(... 
some getters and setters 
...) 

} 

ChildController:

@RequestMapping(value = "/mainpanel" , method = RequestMethod.GET, 
     headers = "accept=application/json") 
public List<ChildDTO> listChild(HttpServletResponse request) 
{ 
    Authentication auth =  SecurityContextHolder.getContext().getAuthentication(); 

    String username = auth.getName(); 

    User user = userService.findUserByUsername(username); 

    List<Child> list = service.findAllUserChilds(user.getId()); 

    List<ChildDTO> result = new ArrayList<>(); 

    for (Child child : list) 
    { 
     result.add(ChildMapper.map(child)); 
    } 

    return result; 
} 

ChildDaoImpl:

@Repository("ChildDao") 
public class ChildDaoImpl extends AbstractDao<Integer, Child> implements  ChildDao { 

@SuppressWarnings("unchecked") 
public List<Child> findAllUserChilds(int user_id) 
{ 
    Criteria criteria = createEntityCriteria(); 
    criteria.add(Restrictions.eq("user_object_id", user_id)); 
    return (List<Child>) criteria.list(); 
} 

} 

Antwort

0

Kind hat nicht die propetry user_object_id aber ANWENDEROBJEKT. Sie müssen user_object.id verwenden (wenn id der Name des Attributs in User ist)