如何在spring数据中提供从非实体的类到存储库的值

时间:2016-02-05 22:53:34

标签: java spring spring-mvc jpa spring-data

我对Spring Data和Spring Repositories有疑问。 我需要从另一个不是实体的类中为CrudRepository提供一些值。例如: 我有一个班级

@Entity
class Profile {
   private String id;
   private String name;
   private long birthDate;
   private String aboutMe;
   ...
}

class MyProfile {
   private String profileId;
   private String accountId;
   private String name;
   private String aboutMe;
}

和存储库

@Transactional
@EnableTransactionManagement
@Repository
public interface ProfileRepository extends CrudRepository<Profile, String>{

    @Transactional
    Profile findByAccountId(String id);

    void updateMyProfile(MyProfile myProfile);
}

我想使用MyProfile中提供的数据更新Profile中的某些字段。有办法做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须手动编写更新查询:

@Query("UPDATE Profile p" +
        " SET " +
        " p.name = ?#{#myprofile.name}, " +
        " p.aboutMe = ?#{#myprofile.aboutMe}" +
        " p.account.id = ?#{#myprofile.accountId}" + // I assume that account is another entity
        " WHERE p.id = ?#{#myprofile.profileId}")
@Transactional
@Modifying
void updateMyProfile(@Param("myprofile") MyProfile myprofile);