개발일기

'@JoinColumn's but the primary key has 2 columns 본문

photocard backend server 개발일기

'@JoinColumn's but the primary key has 2 columns

한둥둥 2024. 5. 3. 16:45

1. An association that targets entity 'cohttp://m.realworld.feature.member.entity.MemberJpaEntity' from entity 'cohttp://m.realworld.feature.product.entity.ProductJpaEntity' has 1 '@JoinColumn's but the primary key has 2 columns

 

@JoinColum을 작성을 잘못하여 에러가 났었던 오류이다.. ㅠㅠ 

 

2. object references an unsaved transient instance - save the transient instance before flushing : cohttp://m.realworld.feature.product.entity.ProductJpaEntity.member -> cohttp://m.realworld.feature.member.entity.MemberJpaEntity

 

오류 해당 오류는 저장을 먼저하지 않아 나타난 오류였다. 만약 먼저 저장되어 있는 것이라면 해당 부분을 먼저 조회해주면 JPA 이를 인식하고 에러가 나오지 않는다. 

  @Transactional
    public Product productGeneration(User user, ProductGenerationRequest request) {
        Member member = memberQueryService.getMemberByUserId(user.getUsername());

        Product product = Product.builder()
                .title(request.getTitle())
                .userId(member.getUserId())
                .member(member.toEntity())
                .category(request.getCategory())
                .price(request.getPrice())
                .build();

        return productRepository.save(product.toEntity()).toDomain();
    }

 

getMemberByUserId를 통해 조회를 해오니 해당 에러가 사라짐 

 

3. Cannot invoke "org.hibernate.metamodel.mapping.AttributeMapping.getValue(Object)" because the return value of "org.hibernate.metamodel.mapping.EntityMappingType.findAttributeMapping(String)" is null

 

해당 오류는 table 간에 관계 매핑이 제대로 되어있지 않아 오류가 발생하였다. 나같은 경우는 두 사이 테이블 사이간의 제약조건이 fk로 걸려있었어야 했는데 해당 부분이 제약조건 쪽에서 에러가나 생성되지 않아서 둘 사이 관계를 매핑해줄 때, 런타임에서 발생하였던 오류이다.