나는 내 엔터티 클래스 company.java에서 호출해야하는 메서드가 있습니다. 하지만 난 내 응용 프로그램을 실행할 때 엔티티 클래스의 해당 DAO 객체를 세례반하지 않았다 널 포인터 예외가 발생합니다 ..내 엔터티 클래스에서 DAO 클래스 autowire 싶어
어떻게 엔티티 클래스의 객체가
이 내 엔티티 클래스입니다 도와주세요 얻을 수 있습니다 ..
package com.salebuild.model;
/**
* Define a company.
*
* @author mseritan
*/
@Entity
@Table(name = "company", uniqueConstraints = {@UniqueConstraint(columnNames = "name")})
@XmlRootElement
@XmlSeeAlso(value = ArrayList.class)
public class Company implements PublishableIF, Serializable, PersistableIF, HistoryIF, AddressableIF {
private static final Logger log = LoggerFactory.getLogger(Company.class);
@Autowired
private CompanyDAO companyDAO;
// CONSTANTS -----------------------------------------------------------------------------------
private static final long serialVersionUID = 1L;
// ATTRIBUTES ----------------------------------------------------------------------------------
private Long id;
@NotBlank
private String name;
private String formerName;
private CorporateTitle topLevelExec;
private List<CompanySite> sites;
private List<CompanyAlias> aliases;
@NotNull
private Industry industry;
private Company parentCompany;
private String emailTopology;
@NotNull
private Double revenue;
@NotNull
private Long numberEmployees;
private CustomerType.Type customerType;
private Boolean recruiter = false;
private int publishState;
private CompanyStatus status;
private Boolean excludeCompany = false;
private CompanyType companyType;
private String salesifyCompanyId;
private CompanySiteType companySiteType;
private String websiteUrl;
private String sourceVendor;
private String notes;
private List<CompanySpecializedRanking> specializedList = new ArrayList<CompanySpecializedRanking>();
@NotNull
private NAICSCode naicsCode;
@NotNull
private SICCode sicCode;
private Long version;
private List<Technology> technologies = new ArrayList<Technology>();
private List<CompanyContact> contacts;
private String phoneNumber;
private String faxNumber;
private String email;
private User userCreated;
private Date dateCreated;
private User userLastModified;
private Date dateLastModified;
private User userLastResearcher;
private Date dateLastResearcher;
@NotBlank
private String street1;
private String street2;
private String street3;
private String city;
private String zipCode;
private State state;
private Country country;
private String specRankingListName;
private Integer specRankingRank;
private Integer specRankingYear;
private String modifiedCompanyName;
private String formattedRevenue;
private String formattedEmployeeSize;
private List<JobPostingRaw> unconfirmedTechnologies;
// ACESSORS ------------------------------------------------------------------------------------
//getter setter for other fields //
this.specRankingYear = specRankingYear;
}
/**
* @param modifiedCompanyName
*
*/
@Column(name="modifiedCompanyName")
public String getModifiedCompanyName() {
return modifiedCompanyName;
}
public void setModifiedCompanyName(String modifiedCompanyName) {
if(modifiedCompanyName==null)
this.modifiedCompanyName=modifiedCompanyName;
else{
this.modifiedCompanyName =companyDAO.updateCompanyName(modifiedCompanyName);
}
}
@Transient
public List<JobPostingRaw> getUnconfirmedTechnologies() {
return unconfirmedTechnologies;
}
public void setUnconfirmedTechnologies(
List<JobPostingRaw> unconfirmedTechnologies) {
this.unconfirmedTechnologies = unconfirmedTechnologies;
}
}
내 DAO 클래스는 같다 -
package com.salebuild.dao;
import com.salebuild.model.Company;
import com.salebuild.model.search.EntitySearchCriteria;
import com.salebuild.model.search.SortedResultsPage;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public interface CompanyDAO extends CrudDAO<Company> {
Company findByNameOrAlias(String name);
List<Company> findBySearchTerm(String searchTerm, Integer start, Integer count);
// SortedResultsPage<Company> findPaged(EntitySearchCriteria criteria);
List<Long> findIds(EntitySearchCriteria criteria);
List<Company> find(Collection<Long> ids);
/**
* For just finding the company name and not looking for alias names.
*
* @param name
* @return
*/
public Company findByName(String name);
public Company findByModifiedName(String name,Company... c);
public int companyCountSinceLastLogin(Long id);
Set<Long> findDistinctIds(EntitySearchCriteria criteria);
public Integer getCompanyCountByRegion(Long regionId,List techCatIds);
List<Company> findAllCompanies(Company instance);
public List<Company> findAllModifiedCompanies(Company instance);
public String updateCompanyName(String name);
}
이것은 잘못된 디자인입니다. 왜 당신은 Entity 클래스 내에 DAO를 주입하고 있습니까? – dimitrisli
나는 modifiedcompnyname을 설정하기 위해 DAO 클래스에서 sql 함수를 호출해야합니다. 이 작업을 수행하는 다른 방법을 제안하십시오 – shitanshu
@shitanshu 귀하의 질문에 대한 귀하의 실제 요구 사항을 수정할 수 있습니까? 또한, 왜 당신은 단순히'createNativeQuery'를 통해 DAO의 메소드 내부에 함수를 invoque하지 않습니까? – fGo