我有以下代码,但是当我尝试在ApplicationRunner中使用它时,它给出了undefined。(提示:请使用字段创建构造函数)。我的pom.xml中已经有lombok jar。
@Data
@NoArgsConstructor(force = true)
@AllArgsConstructor
@Entity
@Table(name="customers")
class Customer{
// public Customer(Object object, String string, String string2, HashSet hashSet) {
// // TODO Auto-generated constructor stub
// }
//
// public Customer() {
// }
@Id
@GeneratedValue
private Long id ;
@Column(name="first_name")
private String first;
@Column(name="last_name")
private String last;
@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="customer_fk")
private Set<Order> orders = new HashSet<>();
}
在ApplicationRunner界面的运行方法中使用时=>
@Override
public void run(ApplicationArguments args) throws Exception {
try {
tt.execute( status -> {
Stream.of("Dave,Syer; Phil,Fisher; Mark,Web".split(";"))
.map( name -> name.split(",") )
.forEach( tpl -> this.em.persist( new Customer( null, tpl[0], tpl[1], new HashSet<>() ) ) );
TypedQuery<Customer> customers = this.em.createQuery("select c from Customer c", Customer.class);
customers.getResultList().forEach( customer ->
logger.info("typed query results is : " + ToStringBuilder.reflectionToString(customer) ));
return null ;
}) ;
}catch ( Exception e ) {
e.getStackTrace();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从你的描述来看,问题似乎出在尝试在ApplicationRunner
中实例化Customer
对象时,即使你已经使用了Lombok来生成构造函数。根据提示“请使用字段创建构造函数”,这可能意味着Lombok的注解处理没有按预期工作,或者存在其他编译时/运行时的问题。
首先,请确保以下几点:
确认Lombok插件已正确安装并启用:如果你在IDE中工作,确保已经安装了Lombok插件,并且对于你的项目,该插件是启用状态。Lombok需要IDE支持来识别其注解并自动生成代码。
检查Lombok版本兼容性:确保Lombok的版本与你的Java和Spring Boot版本兼容。不兼容的版本可能导致注解未被正确处理。
查看编译输出和警告:在构建项目时,仔细检查编译器输出或IDE的日志,看是否有任何关于Lombok的警告或错误信息。这可能会提供问题的线索。
直接添加构造函数:虽然Lombok的@AllArgsConstructor
应该为你生成一个全参数的构造函数,但作为排查手段,你可以暂时手动添加构造函数以验证问题是否与Lombok相关。例如:
@AllArgsConstructor
public Customer(Long id, String first, String last, Set orders) {
this.id = id;
this.first = first;
this.last = last;
this.orders = orders;
}
清理和重建项目:有时候,IDE或构建工具的缓存可能会导致问题。尝试执行一个完整的清理(Clean)操作,然后重新构建(Build)项目。
检查pom.xml配置:确认Lombok的依赖被正确地添加到了pom.xml
中,并且在正确的范围(scope)内。通常,它应该是编译(compile)范围:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>YOUR_LOMBOK_VERSION</version>
<scope>provided</scope>
</dependency>
注意:如果仅在编译时需要Lombok(例如,在使用Spring Boot DevTools时),则可以将<scope>
设置为annotationProcessor
或保持默认的provided
,具体取决于你的构建环境和需求。
如果以上步骤都不能解决问题,建议进一步检查项目的构建路径、依赖管理和IDE配置,以确定是否存在更深层次的问题。