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执行项目中,RELEASESpring 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;
}
...
}