2012-06-09 2 views
0

J'ai une question sur les objets Hibernate et en utilisant son cadre Spring MVC. J'ai deux objets: Catégorie et linguistiques relation ManyToOne:Hibernate objets au printemps

@ManyToOne 
@JoinColumn(name="language_id") 
public Language getLanguage() { 
return language; 
} 

Je veux créer une action, ce qui crée une nouvelle catégorie avec la langue choisie. Ma forme ressemble à ceci:

<form:form modelAttribute="addCategory" name="frm" method="post"> 

<form:select path="language.id"> 
<form:options items="${languages}" itemValue="id" itemLabel="name" /> 
</form:select> 

//Other Fields like name etc. 

</form:form> 

Dans la méthode POST contrôleur je:

@RequestMapping(method = RequestMethod.POST, value="/add_category") 
public String addCategory(Category category){ 
//code for save, redirect etc. 
} 

Supposons que je choisir une langue avec ID = 4 et le nom « anglais » qui existant dans la base de données. Lorsque je veux afficher l'ID de la langue dans metod addCategory (par category.getLanguage(). GeiId()) J'ai ID = 4 correctement, mais quand je veux afficher le nom de langue choisi par category.getLanguage(). GetName ( J'ai null. Il est, peut-être, parce que la catégorie d'objet Spring ne sait rien sur les relations dans Hibernate. J'utilise Hibernate 4, Spring 3 et je me connecte à Hibernate avec Spring Bean SessionFactory.

Est-il possible d'obtenir un objet récursif complet dans la demande de printemps? En d'autres termes: situation où Langue dans la catégorie (category.getLanguage()) sera objet complet avec ID = 4 et le nom "anglais".

Merci.

+1

Vous hibernez habituellement en hiver seulement – ssteinberg

Répondre

0

Je me demande pourquoi vous avez besoin d'avoir le nom rempli dans votre objet de langue de l'objet de la catégorie. Parce qu'il sera simplement utilisé à des fins de référence par hibernate lorsque vous essaierez de stocker l'objet category dans la base de données.

Lorsque vous récupérerez un objet de catégorie à partir de la base de données en utilisant Hibernate, il vous renverra l'objet contenant l'objet langage avec à la fois l'ID et la valeur. Toujours si vous voulez afficher le nom de toute façon, vous devez obtenir le nom en utilisant l'ID que vous obtenez de la page jsp sélectionné par l'utilisateur. Ensuite, définissez ce nom dans l'objet stocké dans votre objet catégorie. Autrement, vous devez avoir un autre champ dans le jsp ayant path="language.name".

J'espère que cela vous aide. À votre santé.

Questions connexes