Java 在超类上用@Id Integer Id替换Roo@Id Long Id';不要影响儿童课堂

Java 在超类上用@Id Integer Id替换Roo@Id Long Id';不要影响儿童课堂,java,maven,spring-roo,sts-springsourcetoolsuite,Java,Maven,Spring Roo,Sts Springsourcetoolsuite,我今天碰到了这个问题,解决不了。 我有一个包含类域的项目 @DiscriminatorColumn(name = "type_abrv", columnDefinition = "type_abrv", discriminatorType = DiscriminatorType.STRING) @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Domain { @Id @GeneratedVal

我今天碰到了这个问题,解决不了。 我有一个包含类域的项目

@DiscriminatorColumn(name = "type_abrv", columnDefinition = "type_abrv", discriminatorType = DiscriminatorType.STRING)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Domain {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    @Size(max = 100)
    private String description;

    @Size(max = 10)
    @Column(name = "ABRV")
    private String abbreviation;

    @ManyToOne(targetEntity = Domain.class, optional = true, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_parent", nullable = true, insertable = false)
    @Cascade({ CascadeType.PERSIST })
    private Domain parent = null;

    @ManyToOne(targetEntity = DomainType.class, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_type", nullable = true, insertable = false, referencedColumnName = "id")
    @Cascade({ CascadeType.ALL })
    private DomainType type;

    @Column(name = "ACTIVE")
    private Boolean active;
}
在其他项目中,我希望扩展域,例如:

@Entity
@RooJpaEntity
@DiscriminatorValue(value="MSGST")
public class MessageStatus extends Domain {
    public static String TYPE_ABRV = "MSGST";
    public static String PENDING = "PEND";
    public static String PROCESSING = "IN_PROCESS";
    public static String PROCESSED = "DONE";
}
问题是,Roo正在生成一个包含长id的MessageStatus\uRoo\uJPA\u实体,在我尝试编译项目时导致了冲突

br\com\g4it\util\model\domain\domain处出错。java::0无法重写 java.lang.Integer~.model.domain.domain.getId()和java.lang.Long ~.model.queueout.MessageStatus.getId()返回类型不匹配

所以,我的问题是:我所尝试的是不可能的,还是我做错了?解决办法是什么


我将STS与Roo插件一起使用,并使用maven构建项目。包含域的项目作为依赖项以及STS的构建路径存在于其他项目pom.xml文件中。Roo的版本是1.2.3。在Roo执行项目中,RELEASE

Spring Roo只能处理源代码中的类(解析.java文件)。所以,如果您包含来自jar的域类,它就不能识别域类的注释或属性。这就是为MessageStatus生成id字段的原因(Roo找不到任何id字段)

要做到这一点,你必须使用


祝你好运

很好,我得到了一个否定的答案,但是没有任何关于为什么的评论…我必须读一下。非常感谢你为我指明了方向。
privileged aspect MessageType_Roo_Jpa_Entity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long MessageType.id;

    public Long MessageType.getId() {
        return this.id;
    }

    public void MessageType.setId(Long id) {
        this.id = id;
    }
...
}