我正在尝试编译我正在编写的Java Web应用程序,并且我遇到了编译错误,我不知道该怎么办。从我完成的谷歌搜索中,我发现了这个SO问题,但是提问者使用的是EJB,而我的错误是在JPA实体类中。
下面是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,我的声明是正确的,所以我在这里被难住了,有人知道我做错了什么吗?感谢您的时间和考虑。
从JavaDoc这里:http://docs.oracle.com/javaee/7/api/javax/persistence/Index.html,索引注释似乎具有@Target(value={}),
这意味着它应该用作复杂注释的一部分,不能直接使用。
引用自https://blogs.oracle.com/arungupta/entry/jpa_2_1_schema_generation,它似乎只能用作JPA注释的一部分:“@Index-默认情况下,在数据库中生成主键的索引。此新注释将允许在单个或多个列上定义其他索引,以获得更好的性能。它被指定为@Table、@SecondaryTable、@CollectionTable、@@JoinTable和@TableGenerator的一部分”
我有一个焊接限定符注释声明如下: 我的豆子界面是这样的: 合格的实现是这样的: Maven编译器说(在AccountResponseResponder.java): 我确信我错过了一些明显的东西,但它是什么逃避了我。任何帮助将不胜感激。
我没有正确使用注释吗? 编译错误: 注释工作正常,可以毫无问题地访问该网页。
我正在学习Spring和Data JPA。我对Ehcache有问题。我想缓存我的一个方法的返回值,该方法从数据库返回一些记录。这是一个预配置Ehcache实例的练习(我假设)。问题是,我不能使用注释@cacheable将我的方法标记为它的返回值应该被缓存的方法。我得到一个不兼容类型编译错误(Required:boolean,Found:String)。下面是我的服务层中的一个类,我认为我应该将@c
2.11 和爪哇7。我正在尝试使用@XmlSchema注释我的包如下所示。 然而,我得到了这个编译错误,“注释类型不适用于这种声明” 有人知道为什么会发生这种事吗?
我有一个包信息类,它以前在Java 6/7中编译。但是在Java 8中,我会遇到编译错误: * * * * *错误:批注类型不适用于这种声明@NamedNativeQueries({ 错误:注释类型不适用于这种声明@SqlResultSetMappings({***** 这是代码: 先谢谢你的帮助
在编译过程中,我遇到一个错误:“注释类型不适用于这种声明”。和细节: 我使用JDK 1.6.18和@XmlElement在这个版本中不可用。我发现JAXB(它的版本)中的主要问题。它在这里被讨论: XmlElement注释用WebParam脱盐 是否可以替换JAXB实现在JavaJRE 1.6 SE中的版本?。 我使用认可的方法($JAVA_HOME/lib/认可)更新了JDK中的JAXB,但它仍