Hibernate:使用@OneToMany或@ManyToMany定位未映射的类

时间:2011-03-29 16:02:25

标签: java hibernate jpa

我无法找到我的错误在哪里,我没有映射我的课程,但对我来说一切都很好......但不是。

有人可以帮我找到吗?

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.bytecode.entities.Event.categorytagit[com.bytecode.entities.Categorytagit]
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1068)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:600)
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

    package com.bytecode.entities;
// Generated 29/03/2011 12:15:48 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Event generated by hbm2java
 */
@Entity
@Table(name = "event", catalog = "tagit")
public class Event implements java.io.Serializable {

    private Integer id;
    private User user;
    private String name;
    private Date iniEventDate;
    private Date iniInscDate;
    private Date endInscDate;
    private String urlPicture;
    private Integer idEventoFacebook;
    private String description;
    private Integer places;
    private Integer lottery;
    private String street;
    private String city;
    private Integer idMainEvent;
    private Set<Tag> tags = new HashSet<Tag>(0);
    private Set<Presentparticipants> presentparticipantses = new HashSet<Presentparticipants>(0);
    private Set<User> users = new HashSet<User>(0);
    private Set<Categorytagit> categorytagit = new HashSet<Categorytagit>(0);

    public Event() {
    }

    public Event(User user, String name, Date iniEventDate, String description, String street, String city) {
        this.user = user;
        this.name = name;
        this.iniEventDate = iniEventDate;
        this.description = description;
        this.street = street;
        this.city = city;
    }

    public Event(User user, String name, Date iniEventDate, Date iniInscDate, Date endInscDate, String urlPicture, Integer idEventoFacebook, String description, Integer places, Integer lottery, String street, String city, Integer idMainEvent, Set<Tag> tags, Set<Presentparticipants> presentparticipantses, Set<User> users, Set<Categorytagit> categorytagit) {
        this.user = user;
        this.name = name;
        this.iniEventDate = iniEventDate;
        this.iniInscDate = iniInscDate;
        this.endInscDate = endInscDate;
        this.urlPicture = urlPicture;
        this.idEventoFacebook = idEventoFacebook;
        this.description = description;
        this.places = places;
        this.lottery = lottery;
        this.street = street;
        this.city = city;
        this.idMainEvent = idMainEvent;
        this.tags = tags;
        this.presentparticipantses = presentparticipantses;
        this.users = users;
        this.categorytagit = categorytagit;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idOrganizer", nullable = false)
    public User getUser() {
        return this.user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Column(name = "name", nullable = false, length = 55)
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "iniEventDate", nullable = false, length = 19)
    public Date getIniEventDate() {
        return this.iniEventDate;
    }

    public void setIniEventDate(Date iniEventDate) {
        this.iniEventDate = iniEventDate;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "iniInscDate", length = 19)
    public Date getIniInscDate() {
        return this.iniInscDate;
    }

    public void setIniInscDate(Date iniInscDate) {
        this.iniInscDate = iniInscDate;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "endInscDate", length = 19)
    public Date getEndInscDate() {
        return this.endInscDate;
    }

    public void setEndInscDate(Date endInscDate) {
        this.endInscDate = endInscDate;
    }

    @Column(name = "urlPicture")
    public String getUrlPicture() {
        return this.urlPicture;
    }

    public void setUrlPicture(String urlPicture) {
        this.urlPicture = urlPicture;
    }

    @Column(name = "idEventoFacebook")
    public Integer getIdEventoFacebook() {
        return this.idEventoFacebook;
    }

    public void setIdEventoFacebook(Integer idEventoFacebook) {
        this.idEventoFacebook = idEventoFacebook;
    }

    @Column(name = "description", nullable = false, length = 65535)
    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "places")
    public Integer getPlaces() {
        return this.places;
    }

    public void setPlaces(Integer places) {
        this.places = places;
    }

    @Column(name = "lottery")
    public Integer getLottery() {
        return this.lottery;
    }

    public void setLottery(Integer lottery) {
        this.lottery = lottery;
    }

    @Column(name = "street", nullable = false)
    public String getStreet() {
        return this.street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    @Column(name = "city", nullable = false, length = 55)
    public String getCity() {
        return this.city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Column(name = "idMainEvent")
    public Integer getIdMainEvent() {
        return this.idMainEvent;
    }

    public void setIdMainEvent(Integer idMainEvent) {
        this.idMainEvent = idMainEvent;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "event")
    public Set<Tag> getTags() {
        return this.tags;
    }

    public void setTags(Set<Tag> tags) {
        this.tags = tags;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "event")
    public Set<Presentparticipants> getPresentparticipantses() {
        return this.presentparticipantses;
    }

    public void setPresentparticipantses(Set<Presentparticipants> presentparticipantses) {
        this.presentparticipantses = presentparticipantses;
    }

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "eventuser", catalog = "tagit", joinColumns = {
        @JoinColumn(name = "idEvent", nullable = false, updatable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "idUser", nullable = false, updatable = false)})
    public Set<User> getUsers() {
        return this.users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "eventcategory", catalog = "tagit", joinColumns = {
        @JoinColumn(name = "idEvent", nullable = false, updatable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "idCategory", nullable = false, updatable = false)})
    public Set<Categorytagit> getCategorytagit() {
        return this.categorytagit;
    }

    public void setCategorytagit(Set<Categorytagit> categorytagit) {
        this.categorytagit = categorytagit;
    }
}

我的hibernate.cfg:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql:xxxx</property>
    <property name="hibernate.connection.username">xxxxxxxxx</property>
    <property name="hibernate.connection.password">xxxxxxxxxxxx</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <!-- Connection pool C3P0 -->
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">100</property>
    <property name="hibernate.c3p0.timeout">20</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">60</property>
    <!-- To show sql output on the screen -->
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>

    <!-- Mapping the entities -->
    <mapping class="com.bytecode.entities.Categorytagit"/>
    <mapping class="com.bytecode.entities.Likes"/>
    <mapping class="com.bytecode.entities.Categoryfacebook"/>
    <mapping class="com.bytecode.entities.Accountconfirmation"/>
    <mapping class="com.bytecode.entities.User"/>
    <mapping class="com.bytecode.entities.Tag"/>
    <mapping class="com.bytecode.entities.PresentparticipantsId"/>
    <mapping class="com.bytecode.entities.Company"/>
    <mapping class="com.bytecode.entities.Event"/>
    <mapping class="com.bytecode.entities.Presentparticipants"/>
  </session-factory>
</hibernate-configuration>

更新:

package com.bytecode.entities;
// Generated 29/03/2011 12:15:48 by Hibernate Tools 3.2.1.GA

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Categorytagit generated by hbm2java
 */
@Entity
@Table(name = "categorytagit", catalog = "tagit")
public class Categorytagit implements java.io.Serializable {

    private Integer id;
    private String name;
    private Set<Likes> likeses = new HashSet<Likes>(0);
    private Set<Categoryfacebook> categoryfacebooks = new HashSet<Categoryfacebook>(0);
    private Set<Event> events = new HashSet<Event>(0);

    public Categorytagit() {
    }

    public Categorytagit(String name) {
        this.name = name;
    }

    public Categorytagit(String name, Set<Likes> likeses, Set<Categoryfacebook> categoryfacebooks, Set<Event> events) {
        this.name = name;
        this.likeses = likeses;
        this.categoryfacebooks = categoryfacebooks;
        this.events = events;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "name", nullable = false, length = 55)
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "categorytagit")
    public Set<Likes> getLikeses() {
        return this.likeses;
    }

    public void setLikeses(Set<Likes> likeses) {
        this.likeses = likeses;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "categorytagit")
    public Set<Categoryfacebook> getCategoryfacebooks() {
        return this.categoryfacebooks;
    }

    public void setCategoryfacebooks(Set<Categoryfacebook> categoryfacebooks) {
        this.categoryfacebooks = categoryfacebooks;
    }

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "eventcategory", catalog = "tagit", joinColumns = {
        @JoinColumn(name = "idCategory", nullable = false, updatable = false)}, inverseJoinColumns = {
        @JoinColumn(name = "idEvent", nullable = false, updatable = false)})
    public Set<Event> getEvents() {
        return this.events;
    }

    public void setEvents(Set<Event> events) {
        this.events = events;
    }
}

1 个答案:

答案 0 :(得分:3)

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idOrganizer", nullable = false)
    public User getUser() {
        return this.user;
    }

我认为您缺少与您的列匹配的目标实体类。

@ManyToOne(targetEntity = User.class)