我想使用lombok:EqualsAndHashCode,只考虑Id,设置在Item class上,在分层结构之上。这些是我的课程: 1.流程:
@Data
@Entity
@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true)
@ToString(callSuper = true)
public class Process extends ResourceWithFlows {
@OneToOne
private Cost cost;
private UUID referenceProduct; //flowBaseId
private UUID processBaseId;
private UUID processTemplateId;
private boolean paretoApplied;
//ref
@ManyToOne
@JoinColumn(name = "fk_equipment")
private Equipment equipment;
@ManyToOne
@JoinColumn(name = "fk_production_line")
private ProductionLine productionLine;
@ManyToOne
@JoinColumn(name = "fk_company")
private Company company;
@ManyToOne
@JoinColumn(name = "fk_supply_chain")
private SupplyChain supplyChain;
}
2.资源流动:
@Data
@Entity
@EqualsAndHashCode(callSuper = true, onlyExplicitlyIncluded = true)
@ToString(callSuper = true)
public class ResourceWithFlows extends Resource {
@OneToMany
@JoinColumn(name = "fk_flow")
private Set<Flow> flows;
@OneToMany
@JoinColumn(name = "fk_elementary_flow")
private Set<ElementaryFlow> elementaryFlows;
}
3.项目:
@Data
@Entity
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@EqualsAndHashCode.Include
private UUID id;
private String name;
private LocalDateTime creationDate;
@Lob
private String description;
@OneToOne
private AuthUser creatorUser;
@PrePersist
void creationDate () {
this.creationDate = LocalDateTime.now();;
}
}
这是正确的还是有其他方法可以通过Id来比较像Process这样的项的子项?我在孩子中使用了callSuper=true和onlyExplicitlyIncluded=true,设置了@EqualsAndHashCode。包含父项的id属性,但我不确定它是否正确。
您所做的确实有效,但鉴于您的要求,似乎完全没有必要。如果您只打算使用最顶层类中的id
字段来识别对象,则无需在层次结构中的任何位置应用@EqualsAndHashCode
。项目
中生成的方法将适用于所有子类。
我有一个类BaseEntity: 和一个扩展类: 我正在尝试使用生成器构建播种机: 我希望Lombok使用基类baseEntity在BreedEntity中创建一个构造函数。 我读了留档,当我删除@实体anotation SuperBuilder文档时,它工作得很好 有人能更详细地解释为什么会发生这种情况吗?
我试着在IntelliJ上使用Lombok和Maven和VRaptor,但它不起作用。 我已经在stackoverflow中阅读了一些信息,但没有解决我的问题,我已经在Intellij中启用了注释处理器,但仍然一无所获。 我也试图从命令行(Windows)编译它,但没有成功。 我还尝试在没有maven的情况下创建另一个项目,添加库,创建一些用于测试的类,它可以完美地工作、编译和运行。 有什么帮助吗
我在Intellij遇到了一个奇怪的问题。我正在使用Lombok(1.18.2)、IntelliJ(2018.2.2)和JUnit 5在gradle 4多模块项目中。 我花了好几个小时来复制这个。 > 运行所有具有覆盖率测试用例。 移除龙目镜并在此之后生成吸气剂和定型剂也没有效果。 尝试了一切来解决这个问题(启用注释处理器、Lombok插件、清理构建),但没有成功。 编辑1: Root build
我在gradle项目中使用lombok,希望创建一个jar文件,但每次我执行jar任务(无论是在控制台还是eclipse ide中触发)时,我都会发现错误,我的lombok导入在我使用lombok注释的类中找不到。输出示例: 搜索了一段时间后,我发现有一个适用于gradle和lombok的插件,但在使用较新的gradle版本编译时并不真正需要。我的gradle版本是3.4.1和lombok 1.6
问题内容: 我正在尝试向使用Lombok的现有Java Maven项目添加常规功能。不幸的是,当我用下面的pom片段启用groovy-maven- eclipse编译器时,我的带有lombok注释的Java文件无法编译。据我所知,Lombok根本不参与Java文件的编译。 我还应该指出,在eclipse中(使用m2e)一切正常。当我尝试执行mvn软件包时,会出现我的问题。 问题答案: @Todd:
Lombok@Data annotation将在带注释的类上无声地添加字段的setter和getter。 如何在龙目岛添加基于条件的setter? lombok中有没有这样的支持 我已经在龙目岛文件中搜索了,我没有看到关于我的问题的解释。