【发布时间】:2019-10-28 06:33:34
【问题描述】:
我有大约 300 个 JPA 实体,其中的 getter 使用持久性注释进行注释。我想找到一种方法将所有此类注释移至属性并删除所有 getter 和 setter。我手动为这些课程中的大约 100 个进行了此操作,但这是非常耗时且令人麻木的工作。
我正在查看Spoon 之类的源代码转换工具,但仍不确定它是否能完成我需要它做的事情。
更具体地说,我该如何转换这段代码:
@Entity
@Table(name = "crm_ticket")
public class CrmTicket implements Serializable {
private static final long serialVersionUID = -902718555957517699L;
private CrmAccount crmAccount;
private ItsType subType;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "account")
public CrmAccount getCrmAccount() {
return crmAccount;
}
public void setCrmAccount(CrmAccount crmAccount) {
this.crmAccount = crmAccount;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sub_type")
public ItsType getSubType() {
return subType;
}
public void setSubType(ItsType type) {
this.subType = type;
}
}
到这里:
@Entity
@Table(name = "crm_ticket")
@Data
public class CrmTicket implements Serializable {
private static final long serialVersionUID = -902718555957517699L;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "account")
private CrmAccount crmAccount;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sub_type")
private ItsType subType;
}
【问题讨论】:
-
我想知道如何限制这个问题的范围?就目前而言,它非常具体!您如何转换一个类,以便将来自 getter 的注释放在属性上?这个问题还不够具体吗?
-
我投票决定重新开放,但我怀疑它可能会再次关闭,因为听起来您正在寻找场外资源/工具。也许描述了你到目前为止尝试过的东西。就我个人而言,我可能会使用某种 awk 脚本,但这只是我自己。肯定会好奇你最终选择了什么解决方案。
-
谢谢@SiKing。我最初尝试使用 awk/sed,但这种转换需要该工具具备一些 Java 语法知识。我将使用 Spoon 在这里发布我的解决方案,这是一个非常酷的源转换工具。
标签: java inria-spoon program-transformation