0

我只是学习 Spring MVC 和 Hibernate 技术的初学者。我正在尝试使用休眠来访问我的数据库,并且我正在使用注释方法将我的 bean 配置到数据库。我正在尝试建立一对多的关系,这让我犯了错误。

基本上我是一个“一次使用可以发布多个测验”的关系

配置休眠时的错误是:
org.hibernate.AnnotationException:使用@OneToMany 或@ManyToMany 以未映射类为目标:bean.User.quizPosted[bean.Quiz] 使用@OneToMany 或@ManyToMany 以未映射类为目标:bean.User .quizPosted[bean.Quiz]

我的两个豆子的代码是:

用户.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>();
    }

和 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>();        

    }
4

1 回答 1

0

您的已定义注释类中有未映射的类,这意味着您在 OnetoMany 和 ManyToOne 关系中使用的所有类必须在应用程序上下文中定义,因为您已定义您正在使用 spring。在您的会话工厂中,在 annotatedClasses 属性中添加您的类。

 <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>

请参阅带注释的会话工厂

于 2012-04-10T17:51:41.177 回答