The only way is to define constructor without arguments for CompanyAuditor, create new instances using javax.enterprise.inject.Instance.get. And afterwards pass all arguments using public methods. Therefore your constructor with an argument must be separated into one without arguments and additional public method to set this argument. Also, you must write your own lambda expression, which is more complicated than just CompanyAuditor::new.
Full example:
@Inject
@New // javax.enterprise.inject.New to always request a new object
private Instance<CompanyAuditor> auditorInjector;
public List returnAllWrappedAuditors() {
return compDAO.getAll()
.stream()
.map( ca -> {
CompanyAuditor auditor = auditorInjector.get();
auditor.setWrappedObject( ca );
return auditor;
})
.collect( Collectors.toList());
}
Afternote:
CDI is not very easy to use when dynamically constructing objects, it excells in injecting dependencies. Therefore it is a bit more verbose than calling constructor to create new objects.
CDI beans must have either constructor without parameters or all parameters annoted with @Inject (which does not help in your case) See Java EE 7 tutorial