2013-06-24 5 views
6

मैं एक जावा वेब ऐप संकलित करने की कोशिश कर रहा हूं जिसे मैं लिख रहा हूं, और मुझे संकलन त्रुटियां मिल रही हैं जो मुझे यकीन नहीं है कि क्या करना है। googling मेरे द्वारा की गई, मैं this तो सवाल यह पाया है, लेकिन प्रश्नकर्ता EJB उपयोग कर रहा है, जबकि मेरी त्रुटि एक जेपीए इकाई कक्षा में है।त्रुटि: एनोटेशन प्रकार इस प्रकार की घोषणा पर लागू नहीं है

यहाँ यहाँ Maven निर्माण त्रुटि है।

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.988s 
[INFO] Finished at: Mon Jun 24 02:39:51 UTC 2013 
[INFO] Final Memory: 15M/247M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project donebox: Compilation failure: Compilation failure: 
[ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/User.java:[50,4] error: annotation type not applicable to this kind of declaration 
[ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/User.java:[60,4] error: annotation type not applicable to this kind of declaration 
[ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/Role.java:[53,4] error: annotation type not applicable to this kind of declaration 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

और मेरे उपयोगकर्ता उपलब्ध है वर्ग फ़ाइल

package net.donebox.accounts; 
import java.io.Serializable; 
import java.util.UUID; 
import java.util.HashSet; 
import java.util.Set; 

import javax.persistence.Basic; 
import javax.persistence.Cacheable; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Table; 
import javax.persistence.Column; 
import javax.persistence.Index; 
import javax.persistence.ManyToMany; 
import javax.persistence.JoinTable; 

import org.apache.shiro.crypto.hash.Sha256Hash; 
import org.apache.shiro.crypto.RandomNumberGenerator; 
import org.apache.shiro.crypto.SecureRandomNumberGenerator; 

@Entity 
@Table(name="users") 
public class User { 

    private UUID id; 
    private String username; 
    private String email; 
    private String password; 
    private Set<Role> roles = new HashSet<Role>(); 


    @Id 
    @GeneratedValue 
    public UUID getId() { 
     return id; 
    } 

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

    /** 
    * Returns the username associated with this user account; 
    * 
    * @return the username associated with this user account; 
    */ 
    @Basic 
    @Column(length=100) 
    @Index(name="idx_users_username", columnList="username") //Error here. 
    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    @Basic 
    @Index(name="idx_users_email", columnList="email") // And here. 
    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    /** 
    * Returns the password for this user. 
    * 
    * @return this user's password 
    */ 
    @Basic(optional=false) 
    @Column(length=255) 
    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 


    @ManyToMany 
    @JoinTable(name="users_roles") 
    public Set<Role> getRoles() { 
     return roles; 
    } 

    public void setRoles(Set<Role> roles) { 
     this.roles = roles; 
    } 

} 

मैंने javax.persistence.Index JavaDoc को देखा, और मेरे पास घोषणा सही है, इसलिए मैं यहां फंस गया हूं, क्या कोई जानता है कि मैं क्या गलत कर रहा हूं? अपने समय और विचार के लिए धन्यवाद।

+0

के रूप में निर्दिष्ट किया गया है क्योंकि आपकी परिभाषा तर्कसंगत है (और जेडीओ दृढ़ता spec इंडेक्स निर्दिष्ट करने के अन्य तरीकों के साथ उस तरह का समर्थन करता है), आप केवल XXXTable एनोटेशन के माध्यम से जेपीए में इंडेक्स निर्दिष्ट कर सकते हैं, उपयोगकर्ता 2507946 उत्तर देखें) – DataNucleus

उत्तर

2

जावाडोक से यहां: http://docs.oracle.com/javaee/7/api/javax/persistence/Index.html, ऐसा लगता है कि इंडेक्स एनोटेशन में @Target(value={}) है जिसका अर्थ है कि इसे जटिल एनोटेशन के हिस्से के रूप में उपयोग किया जाना चाहिए और सीधे इसका उपयोग नहीं किया जा सकता है।

https://blogs.oracle.com/arungupta/entry/jpa_2_1_schema_generation से हवाला देते हुए, ऐसा लगता है कि यह केवल जेपीए एनोटेशन के हिस्से के रूप में इस्तेमाल किया जा सकता है: "@index - प्राथमिक कुंजी के लिए एक सूचकांक एक डेटाबेस में डिफ़ॉल्ट रूप से उत्पन्न होता है यह नया एनोटेशन अतिरिक्त अनुक्रमणिका परिभाषित करने के लिए अनुमति देगा। , एक बेहतर प्रदर्शन के लिए, एक या एकाधिक स्तंभों पर, इसे @Table, @SecondaryTable, @CollectionTable, @JoinTable, और @TableGenerator "

संबंधित मुद्दे