겨울잠을 자다, jpa.slot.BasicPathUsageException: 기본 유형의 특성에 가입할 수 없습니다.
두 개의 테이블이 있습니다.Tax
그리고.TaxRule
두 테이블 모두에 동일한 열이 하나 있습니다.TAX_RULE_ID
그러나 다음과 같은 최대 절전 모드 매핑은 없습니다.OneToOne
또는OneToMany
두 테이블 모두...
세금
@Id
@Column(name = "TAX_RATE_ID")
private Long taxRateId;
@Column(name = "TAX_RULE_ID")
private Long taxRuleId;
@Column(name = "TAX_TYPE")
private String taxType;
세금_규칙
@Id
@Column(name = "TAX_RULE_ID")
private Long taxRuleId;
@Column(name = "TAX_CD")
private String TaxCode;
@Column(name = "STATE")
private String state;
키에 대한 데이터를 가져오려고 합니다.TAX_RULE_ID
이 열은 두 표 모두에서 공통적입니다.나는 다음이 있습니다.Hibernate
내가 두 테이블 모두에 참여하는 코드TAX_RULE_ID
열은 다음과 같습니다.
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<String[]> cQuery = criteriaBuilder.createQuery(String[].class);
Root<Tax> taxRoot = cQuery.from(Tax.class);
cQuery.multiselect(taxRateRoot.get("taxType"), taxRateRoot.get("taxRate"));
List<Predicate> predicates = new ArrayList<>();
Join<Tax, TaxRule> join = taxRoot.join("taxRuleId");
.....rest of the code.
조인 포인트에 대한 다음과 같은 예외를 확인할 수:
org.hibernate.jpa.criteria.BasicPathUsageException: Cannot join to attribute of basic type
at org.hibernate.jpa.criteria.path.AbstractFromImpl.constructJoin(AbstractFromImpl.java:270)
at org.hibernate.jpa.criteria.path.AbstractFromImpl.join(AbstractFromImpl.java:263)
at org.hibernate.jpa.criteria.path.AbstractFromImpl.join(AbstractFromImpl.java:436)
at com.iclsystems.base.dao.TaxRateDAOImpl.getTaxTypeForApplicableWorkOrderTax(TaxRateDAOImpl.java:31)
at com.iclsystems.base.businessObjects.TaxLookupBOImpl.getTaxTypeForApplicableWorkOrderTax(TaxLookupBOImpl.java:53)
at com.iclsystems.base.businessObjects.TaxLookupBOImpl.getWorkOrderTaxLookup(TaxLookupBOImpl.java:29)
at com.iclsystems.test.eventhandler.base.TaxLookupBOTest.testTaxLookupBO(TaxLookupBOTest.java:52)
사용할 수 없습니다.@Join
기본 속성에 대한 주석(예: 단순 속성)@Column
매핑)을 선택합니다.@Join
연결을 위한 것입니다.
- 일대일의
- 일대다의
- 다대일의
- 다대다의
이 라인을 제거해야 합니다.taxRuleId
데이터베이스에서 이미 가져옵니다.
Join<Tax, TaxRule> join = taxRoot.join("taxRuleId");
TaxRule 테이블에 참여하려면 다음을 교체해야 합니다.
@Column(name = "TAX_RULE_ID")
private Long taxRuleId;
다대1 연관성이 있는 경우:
@ManyToOne
@JoinColumn(name = "TAX_RULE_ID")
private TaxRule raxRule;
언급URL : https://stackoverflow.com/questions/30166806/hibernate-jpa-criteria-basicpathusageexception-cannot-join-to-attribute-of-basi
'programing' 카테고리의 다른 글
SQL Server 로그인 오류: 'NT AUTHORITY\SYSTEM' 사용자에 대한 로그인 실패 (0) | 2023.08.23 |
---|---|
AWS S3: POST 또는 PUT 요청을 사용하여 파일을 업로드해야 합니까? (0) | 2023.08.23 |
T-sql - 값이 정수인지 확인합니다. (0) | 2023.08.23 |
jQuery 'click', 'bind', 'live', 'delegate', 'trigger', 'on' 기능(예시)의 차이는 무엇입니까? (0) | 2023.08.23 |
도커가 포트를 호스트에만 노출 (0) | 2023.08.23 |