2014-04-04 71 views
-1

今天我遇到了這個問題,無法解決它。 我有一個包含類域的項目。使用@Id替換Roo @Id Long id超類中的Integer id不會影響子類

@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"; 
} 

的事情是,袋鼠正在產生含長ID的MessageStatus_Roo_Jpa_Entity而發生衝突時,我嘗試編譯項目。在BR

錯誤\ COM \ g4it \ UTIL \模型\域\ Domain.java :: 0不能用java重寫 java.lang.Integer中〜.model.domain.Domain.getId()。 lang.Long 〜.model.queueout.MessageStatus.getId()的返回類型不匹配

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; 
    } 
... 
} 

所以,我的問題是:難道這是不可能的事,我想,或者我做錯了?解決方案是什麼?

我正在使用STO和Roo Add On,並用maven構建項目。包含Domain的項目作爲依賴項存在於其他項目的pom.xml文件中,以及STS的構建路徑。袋鼠的版本是1.2.3.RELEASE

+0

不錯,我得到了一個消極的,但沒有任何意見,爲什麼... – elithin

回答

1

的Spring Roo只能從源處理類(解析.java文件)在袋鼠執行中的項目。因此,如果您包含來自罐子域名類別,則無法識別域名類別的註釋或屬性。這是生成id字段的原因MessageStatus(Roo找不到任何)。

要做到這樣想,你必須使用Roo multi module support

祝你好運!

+0

我必須閱讀那。非常感謝我指點一個方向。 – elithin