2012-11-04 43 views
5

Tôi đang sử dụng Eclipse Indigo với thực thi JPA-2 của Hibernate. Vấn đề là khi tôi sử dụng công cụ đó để "Tạo bảng từ thực thể" thì không có tác dụng gì cả. Tôi nhận được 45 lỗi nói rằng bảng của tôi không tồn tại. Bất cứ ai có thể giúp tôi tìm ra điều này, googling đã không giúp đỡ. Tôi bị mắc kẹt ở đây trong một thời gian dài.JPA tạo các bảng từ các thực thể không làm bất cứ điều gì

Đây là Hibernate Config tôi

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

Entity:

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

Bạn có thể đăng mã của bất kỳ đối tượng nào của mình hay không. Ví dụ Lưu ý. Bạn cũng có thể xem [Sử dụng bộ tạo bảng trong Hibernate/JPA] (http://gautirao.wordpress.com/2011/05/19/using-table-generator-in-hibernatejpa/) – andih

+0

Tôi nhận được một trang không tìm thấy lỗi trên liên kết bạn đã cho tôi. Tôi đã đăng mã cho một thực thể như bạn đã hỏi. – user1755645

+0

Đây là liên kết hoàn chỉnh dưới dạng văn bản: http://gautirao.wordpress.com/2011/05/19/using-table-generator-in-hibernatejpa/. Đầu ra gỡ lỗi của công cụ hbm2ddl là gì? http://learningviacode.blogspot.de/2011/09/hibernatehbm2ddlauto-2.html – andih

Trả lời

0

Tôi mới vào stackoverflow, vì vậy xin lỗi nếu điều này là không chính xác.
Bạn đã xem là thay đổi

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

vào

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

để xem nếu điều này đặt nó lên vòng lần đầu tiên? Tôi luôn luôn sử dụng tạo và sau đó nhận xét nó ra, nếu không nó sẽ tái tạo nó mỗi lần, nhưng dường như làm việc cho tôi.

Các vấn đề liên quan