2012-04-10 7 views
0

Ich bin nur ein Anfänger im Erlernen von Spring MVC und Hibernate-Technologien. Ich versuche Hibernate zu verwenden, um auf meine Datenbank zuzugreifen, und ich verwende Annotationsmethode, um meine Beans zur Datenbank zu konfigurieren. Ich versuche, eine Eins-zu-viele-Beziehung zu schaffen, die mir einen Fehler beschert.mit Hibernate, um eine durch Annotation One to viele Beziehung zu generieren

Grundsätzlich Ich bin es ist ein „one Verwendung mehrerer Quiz veröffentlichen können“ relation

der Fehler während Ruhezustand ist die Konfiguration:
org.hibernate.AnnotationException: Verwendung von @OneToMany oder @ManyToMany Targeting einem nicht zugeordneten Klasse : bean.User.quizPosted [bean.Quiz] Verwendung von @OneToMany oder @ManyToMany eine nicht zugeordnete Klasse-Targeting: bean.User.quizPosted [bean.Quiz]

meinen Code für die beiden Bohnen sind:

U ser.java

package bean; 

    import java.util.HashSet; 
    import java.util.Set; 

    import javax.persistence.Column; 
    import javax.persistence.Entity; 
    import javax.persistence.GeneratedValue; 
    import javax.persistence.GenerationType; 
    import javax.persistence.Id; 
    import javax.persistence.JoinColumn; 
    import javax.persistence.ManyToOne; 
    import javax.persistence.OneToMany; 
    import javax.persistence.Table; 
    import javax.persistence.UniqueConstraint; 

    @Entity 
    @Table(name="User", uniqueConstraints ={@UniqueConstraint(columnNames="userName"})}) 
    public class User { 
     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
     private Integer id; 

     @ManyToOne(targetEntity=Person.class) 
     @JoinColumn(name="PersonId") 
     private Person person; 

     @Column(name="userName") 
     private String userName; 

     @Column(name="password") 
     private String password; 

     @Column(name="role") 
     private String role; 

     @OneToMany(mappedBy = "postedBy") 
     private Set<Quiz> quizPosted = new HashSet<Quiz>(); 

     @OneToMany(mappedBy = "userId") 
     private Set<User_Quiz> user_Quizs = new HashSet<User_Quiz>(); 
    } 

und quiz.java

package bean; 

    import java.sql.Date; 
    import java.util.HashSet; 
    import java.util.Set; 

    import javax.persistence.Column; 
    import javax.persistence.Entity; 
    import javax.persistence.GeneratedValue; 
    import javax.persistence.GenerationType; 
    import javax.persistence.Id; 
    import javax.persistence.JoinColumn; 
    import javax.persistence.ManyToOne; 
    import javax.persistence.OneToMany; 
    import javax.persistence.Table; 
    import javax.persistence.UniqueConstraint; 


    @Entity 
    @Table(name = "Quiz") 
    public class Quiz { 

     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
     private Integer quizId; 

     @Column(name = "duration") 
     private Integer duration; 

     @Column(name = "date") 
     private Date date; 

     @ManyToOne(targetEntity = User.class) 
     @JoinColumn(name = "postedBy") 
     private User postedBy; 

     @OneToMany(mappedBy="quizId") 
     private Set<User_Quiz> user_Quizs = new HashSet<User_Quiz>();   

    } 

Antwort

0

Sie haben unmaped Klassen in Ihrer definierten kommentierten Klasse, was bedeutet, dass alle Klassen, die Sie verwendet haben, in OneToMany und ManyToOne Beziehungen müssen in Anwendung definiert werden Kontext, wie Sie definiert haben, dass Sie den Frühling verwenden. Fügen Sie in der Sitzungsfactory Ihre ur-Klasse in die annotatedClasses-Eigenschaft ein.

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="annotatedClasses"> 
    <list> 
     <value>test.package.Foo</value> 
     <value>test.package.Bar</value> 
    </list> 
    </property> 
</bean> 

Siehe Annotated Session Factory

+0

Vielen Dank, .. Das ist wirklich gearbeitet ..! – user1324493