2012-11-04 8 views
5

Używam Eclipse Indigo z implementacją Hibernate JPA-2. Problem polega na tym, że kiedy używam tego narzędzia do "Generowania tabel z encji", nie ma żadnego efektu. Otrzymuję 45 błędów mówiących, że moje tabele nie istnieją. Czy ktoś może mi pomóc to zrozumieć, googling nie pomógł. Utknąłem w tym od dłuższego czasu.JPA generuje tabele z elementów, które nie robią nic.

Oto moja Hibernate Config

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="testjpa" transaction-type="RESOURCE_LOCAL"> 
     <class>com.myclassregister.model.helper.enums.UserTypeEnum</class> 
     <class>com.myclassregister.model.helper.enums.SystemRoleEnum</class> 
     <class>com.myclassregister.model.helper.enums.SchoolRoleEnum</class> 
     <class>com.myclassregister.model.helper.enums.PreferenceGroupEnum</class> 
     <class>com.myclassregister.model.helper.enums.PreferenceEnum</class> 
     <class>com.myclassregister.model.helper.enums.PostTypeEnum</class> 
     <class>com.myclassregister.model.helper.enums.NoteTypeEnum</class> 
     <class>com.myclassregister.model.helper.enums.NotePermissionEnum</class> 
     <class>com.myclassregister.model.helper.enums.IssueTypeEnum</class> 
     <class>com.myclassregister.model.helper.enums.IssueCategoryEnum</class> 
     <class>com.myclassregister.model.helper.enums.GenderEnum</class> 
     <class>com.myclassregister.model.helper.enums.CaseStatusEnum</class> 
     <class>com.myclassregister.model.helper.embeddables.Recipient</class> 
     <class>com.myclassregister.model.helper.embeddables.Name</class> 
     <class>com.myclassregister.model.helper.embeddables.Mobile</class> 
     <class>com.myclassregister.model.helper.embeddables.Landline</class> 
     <class>com.myclassregister.model.helper.embeddables.BlobField</class> 
     <class>com.myclassregister.model.helper.embeddables.AuditTrail</class> 
     <class>com.myclassregister.model.helper.embeddables.Address</class> 
     <class>com.myclassregister.model.base.users.UserCredential</class> 
     <class>com.myclassregister.model.base.users.User</class> 
     <class>com.myclassregister.model.base.users.Teacher</class> 
     <class>com.myclassregister.model.base.users.SystemUser</class> 
     <class>com.myclassregister.model.base.users.SystemAdmin</class> 
     <class>com.myclassregister.model.base.users.Student</class> 
     <class>com.myclassregister.model.base.users.SchoolStaff</class> 
     <class>com.myclassregister.model.base.users.Principal</class> 
     <class>com.myclassregister.model.base.users.Parent</class> 
     <class>com.myclassregister.model.base.users.OfficeAdmin</class> 
     <class>com.myclassregister.model.base.subject.Syllabus</class> 
     <class>com.myclassregister.model.base.subject.Subject</class> 
     <class>com.myclassregister.model.base.subject.Schedule</class> 
     <class>com.myclassregister.model.base.subject.Homework</class> 
     <class>com.myclassregister.model.base.subject.Grade</class> 
     <class>com.myclassregister.model.base.subject.ExamSeries</class> 
     <class>com.myclassregister.model.base.subject.Exam</class> 
     <class>com.myclassregister.model.base.subject.Assignment</class> 
     <class>com.myclassregister.model.base.preferences.UserPreference</class> 
     <class>com.myclassregister.model.base.preferences.SchoolPreference</class> 
     <class>com.myclassregister.model.base.preferences.ParentSMSFilter</class> 
     <class>com.myclassregister.model.base.posts.PostRecipient</class> 
     <class>com.myclassregister.model.base.posts.Post</class> 
     <class>com.myclassregister.model.base.posts.NoteSharing</class> 
     <class>com.myclassregister.model.base.posts.Note</class> 
     <class>com.myclassregister.model.base.posts.Message</class> 
     <class>com.myclassregister.model.base.posts.LeaveRequest</class> 
     <class>com.myclassregister.model.base.misc.SchoolClass</class> 
     <class>com.myclassregister.model.base.misc.School</class> 
     <class>com.myclassregister.model.base.events.EventRSVP</class> 
     <class>com.myclassregister.model.base.events.EventInvitee</class> 
     <class>com.myclassregister.model.base.events.Event</class> 
     <class>com.myclassregister.model.base.casemgmt.Contact</class> 
     <class>com.myclassregister.model.base.casemgmt.Case</class> 
     <properties> 
      <property name="hibernate.hbm2ddl.auto" value="update"/> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost/dummyissoyummy"/> 
      <property name="hibernate.connection.password" value="master"/> 
      <property name="hibernate.connection.username" value="root"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/dummyissoyummy"/> 
      <property name="javax.persistence.jdbc.user" value="root"/> 
      <property name="javax.persistence.jdbc.password" value="master"/> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Podmiot:

import java.util.Set; 

import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.JoinTable; 
import javax.persistence.ManyToOne; 
import javax.persistence.OneToMany; 

import org.hibernate.annotations.Cascade; 

import com.myclassregister.model.base.casemgmt.Contact; 
import com.myclassregister.model.base.users.UserCredential; 
import com.myclassregister.model.helper.enums.CaseStatusEnum; 
import com.myclassregister.model.helper.enums.IssueTypeEnum; 

@Entity 
public class Case implements java.io.Serializable { 

    private static final long serialVersionUID = 1226071621948838470L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.SEQUENCE) 
    @Column(nullable=false,unique=true) 
    private Long caseID;  

    @Column(nullable=true) 
    @ManyToOne(optional=true) 
    @JoinColumn(name="caseOwnerID", referencedColumnName="userID", nullable=true) 
    private UserCredential caseOwner; 

    @Column(nullable=true) 
    @ManyToOne(optional=true) 
    @JoinColumn(name="caseRequestorID", referencedColumnName="userID", nullable=true) 
    private UserCredential caseRequestor; 

    @Column(nullable=false) 
    @ManyToOne(optional=true) 
    @JoinColumn(name="caseStatus", referencedColumnName="caseStatus", nullable=true) 
    private CaseStatusEnum caseStatus; 

    @Column(nullable=false) 
    @ManyToOne(optional=true) 
    @JoinColumn(name="issueType", referencedColumnName="issueType", nullable=true) 
    private IssueTypeEnum issueType; 

    @Column(nullable=false) 
    private Integer severity=5; 

    @OneToMany 
    @Basic(optional=true,fetch=FetchType.LAZY) 
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) 
    @JoinTable(name="caseContact", 
       joinColumns= {@JoinColumn(name="caseID",referencedColumnName="caseID")}, 
       inverseJoinColumns= {@JoinColumn(name="contactID", referencedColumnName = "contactID")} 
    ) 
    private Set<Contact> caseContacts; 

    public Case() { 
    } 

    public Case(Long caseID, UserCredential caseOwner, 
      UserCredential caseRequestor, CaseStatusEnum caseStatus, 
      IssueTypeEnum issueType, Integer severity, Set<Contact> caseContacts) { 
     this.caseID = caseID; 
     this.caseOwner = caseOwner; 
     this.caseRequestor = caseRequestor; 
     this.caseStatus = caseStatus; 
     this.issueType = issueType; 
     this.severity = severity; 
     this.caseContacts = caseContacts; 
    } 

    public Long getCaseID() { 
     return caseID; 
    } 

    public void setCaseID(Long caseID) { 
     this.caseID = caseID; 
    } 

    public UserCredential getCaseOwner() { 
     return caseOwner; 
    } 

    public void setCaseOwner(UserCredential caseOwner) { 
     this.caseOwner = caseOwner; 
    } 

    public UserCredential getCaseRequestor() { 
     return caseRequestor; 
    } 

    public void setCaseRequestor(UserCredential caseRequestor) { 
     this.caseRequestor = caseRequestor; 
    } 

    public CaseStatusEnum getCaseStatus() { 
     return caseStatus; 
    } 

    public void setCaseStatus(CaseStatusEnum caseStatus) { 
     this.caseStatus = caseStatus; 
    } 

    public IssueTypeEnum getIssueType() { 
     return issueType; 
    } 

    public void setIssueType(IssueTypeEnum issueType) { 
     this.issueType = issueType; 
    } 

    public Integer getSeverity() { 
     return severity; 
    } 

    public void setSeverity(Integer severity) { 
     this.severity = severity; 
    } 

    public Set<Contact> getCaseContacts() { 
     return caseContacts; 
    } 

    public void setCaseContacts(Set<Contact> caseContacts) { 
     this.caseContacts = caseContacts; 
    } 

    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int result = 1; 
     result = prime * result 
       + ((caseContacts == null) ? 0 : caseContacts.hashCode()); 
     result = prime * result + ((caseID == null) ? 0 : caseID.hashCode()); 
     result = prime * result 
       + ((caseOwner == null) ? 0 : caseOwner.hashCode()); 
     result = prime * result 
       + ((caseRequestor == null) ? 0 : caseRequestor.hashCode()); 
     result = prime * result 
       + ((caseStatus == null) ? 0 : caseStatus.hashCode()); 
     result = prime * result 
       + ((issueType == null) ? 0 : issueType.hashCode()); 
     result = prime * result 
       + ((severity == null) ? 0 : severity.hashCode()); 
     return result; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Case other = (Case) obj; 
     if (caseContacts == null) { 
      if (other.caseContacts != null) 
       return false; 
     } else if (!caseContacts.equals(other.caseContacts)) 
      return false; 
     if (caseID == null) { 
      if (other.caseID != null) 
       return false; 
     } else if (!caseID.equals(other.caseID)) 
      return false; 
     if (caseOwner == null) { 
      if (other.caseOwner != null) 
       return false; 
     } else if (!caseOwner.equals(other.caseOwner)) 
      return false; 
     if (caseRequestor == null) { 
      if (other.caseRequestor != null) 
       return false; 
     } else if (!caseRequestor.equals(other.caseRequestor)) 
      return false; 
     if (caseStatus == null) { 
      if (other.caseStatus != null) 
       return false; 
     } else if (!caseStatus.equals(other.caseStatus)) 
      return false; 
     if (issueType == null) { 
      if (other.issueType != null) 
       return false; 
     } else if (!issueType.equals(other.issueType)) 
      return false; 
     if (severity == null) { 
      if (other.severity != null) 
       return false; 
     } else if (!severity.equals(other.severity)) 
      return false; 
     return true; 
    } 
} 
+0

Czy możesz opublikować kod dowolnego ze swoich jednostek. Na przykład Uwaga. Możesz również rzucić okiem na [Używanie generatora tabel w Hibernate/JPA] (http://gautirao.wordpress.com/2011/05/19/using-table-generator-in-hibernatejpa/) – andih

+0

Otrzymuję stronę nie znalazłem błąd w linku, który mi dałeś. Wysłałem kod do podmiotu, o jaki prosiłeś. – user1755645

+0

Oto pełny link jako tekst: http://gautirao.wordpress.com/2011/05/19/using-table-generator-in-hibernatejpa/. Jaki jest wynik debugowania narzędzia hbm2ddl? http://learningviacode.blogspot.de/2011/09/hibernatehbm2ddlauto-2.html – andih

Odpowiedz

0

Jestem nowy na stackoverflow, więc przepraszam, jeśli jest to błędne.
Czy bierzesz pod uwagę zmianę

<property name="hibernate.hbm2ddl.auto" value="update"/> 

do

<property name="hibernate.hbm2ddl.auto" value="create"/> 

aby sprawdzić, czy ten ustawia go za pierwszym razem? Zawsze używam kreacji, a następnie komentuję ją, ponieważ w przeciwnym razie będzie ją odtwarzać za każdym razem, ale wydaje się działać dla mnie.

Powiązane problemy