有机会在JPA坚持上课

问题描述 投票:0回答:1

我有我的 User 类,它有自己的表,还有 Organizer 类,它也有自己的表,并且是 User 的特化。如何使 JPA 中已保留的用户成为组织者,同时保持相同的 ID 值

public class OrganizadorService {

    private final OrganizadorRepository organizerRepository;
    private final UsuarioRepository userRepository;

    @Autowired
    private EntityManager entityManager;

    public OrganizadorService(OrganizadorRepository organizerRepository, UsuarioRepository userRepository) {
        this.organizerRepository = organizerRepository;
        this.userRepository = userRepository;
    }

    @Transactional
    public boolean transformToOrganizer(long id) {
        try {
            organizerRepository.transformToOrganizer(id);
            //entityManager.getEntityManagerFactory().getCache().evictAll();
            entityManager.flush();
        } catch (Exception e) {
            return false;
        }

        return true;
    }
}

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.SunLovers.PriseTheSun.model.Organizer;

@Repository
public interface OrganizerRepository extends JpaRepository<Organizer, Long> {
  
    @Modifying
    @Query(nativeQuery = true, value = "INSERT INTO organizer (ID) VALUES (:id)")
    @Transactional
    void transformToOrganizer(@Param("id") Long id);
}
java jpa spring-data-jpa persistence
1个回答
0
投票

这是我希望在我的组织者服务中的transformToOrganizer 的样子。

i) 根据用户 ID 从用户表中获取用户实体。

UserEntity 用户 = userRepository.findById(id);

ii)我们有我们的用户实体,现在我假设用户到组织者的关系是@OneToOne,并且用户id是组织者表中的主键。我们创建一个新的组织者实体并设置必要的详细信息,我们设置organizer.setUser(user)。

请在此处发布您的实体定义以获得更清晰的信息。

© www.soinside.com 2019 - 2024. All rights reserved.