将多个@Id用于复合主键时出现Eclipse错误

时间:2014-01-11 15:31:42

标签: java hibernate jpa jboss-tools

在我的Model项目中(它只有持久类,也就是java bean)我有一个具有复合主键的类。为了映射这个,我在班上使用了两个@Id。在休眠4之前它是不可能的,但现在它是好的。所以,问题是,eclipse在这个类中显示错误,说它应该以旧方式完成。 像这样:

False error

正如我所说,这是一个错误的错误,因为如果我执行它,代码工作正常。 我在eclipse上安装了JBoss Tools插件,但我不知道这些错误是由它还是由eclipse引起的。

任何人都知道如何解决这个问题?并不是说它阻止我执行应用程序,但总是显示错误是一件烦人的事情。

---编辑---

所以,现在我知道问题出在JBoss Tools上,因为我停用了项目上的JPA方面并且错误已经停止。但我希望我可以使用JBoss Tools提供的功能,所以......还没有解决方案。

2 个答案:

答案 0 :(得分:22)

好吧,差不多晚了一年,但我今天自己也遇到过这个问题: - )

您可以在Eclipse中关闭此错误。转到

偏好设置 - > Java持久性 - > JPA->错误/警告

在Type部分下查找类别"在定义多个ID映射时必须使用ID类。"并将其从“错误”更改为“忽略”(或者您要为其提供的任何严重性)。

答案 1 :(得分:0)

如果你有一个复合键,你也应该有一个复合键类

像这样映射的东西:

@Entity
@IdClass(PK_BP.class)
@Table(name="BP_BIS")
public class BP_BIS implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id  
    private String BP_MODE;
    @Id  
    private String BP_BD;

复合键类将如下所示:

public class PK_BP implements Serializable
{
    private static final long serialVersionUID = 1L;

    private String BP_MODE;
    private String BP_BD;

    public PK_BP()
    {}

    public PK_BP(String bP_MODE, String bP_BD) {
        this.BP_MODE = bP_MODE;
        this.BP_BD = bP_BD;
    }

}