Java 使用IdClass连接表

Java 使用IdClass连接表,java,hibernate,jpa,join,Java,Hibernate,Jpa,Join,在我的项目中,以下是实体的结构 public class FriendId { private String profileFrom; private String profileTo; ... } 对于用作PK-FriendId的好友实体 @Entity @Table(name = "FRIEND") @IdClass(FriendId.class) public class Friend { @Id @ManyToOne @JoinColum

在我的项目中,以下是实体的结构

public class FriendId {
    private String profileFrom;
    private String profileTo;
    ...
}
对于用作PK-FriendId的好友实体

@Entity
@Table(name = "FRIEND")
@IdClass(FriendId.class)
public class Friend {
    @Id
    @ManyToOne
    @JoinColumn(name = "PROFILE_UUID_1", nullable = false)
    private Profile profileFrom;

    @Id
    @ManyToOne
    @JoinColumn(name = "PROFILE_UUID_2", nullable = false)
    private Profile profileTo;

    ...
}
问题是我不能加入方法
findFriendsByUser

public List<User> findFriendsByUser(String userUuid) {
    CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
    CriteriaQuery<User> query = builder.createQuery(User.class);
    Root<User> userRoot = query.from(User.class);
    Join<User, Profile> profileJoin = userRoot.join(PROFILES);
    Join<Profile, Friend> friendsJoin = profileJoin.join(FRIENDS);
    Join<Friend, Profile> profileFriendsJoin = friendsJoin.join(PROFILE_TO);
    Join<Profile, User> userFriendsJoin = profileFriendsJoin.join(USER);
    Predicate userPredicate = builder.equal(userFriendsJoin.get(UUID), userUuid);
    query.select(userRoot).where(userPredicate);
    return getEntityManager().createQuery(query).getResultList();
}
使用annotation@embeddeble的唯一解决方案是什么?

看看:

这里不是这样,类型不同

看看:

这里不是这样,类型不同

java.lang.RuntimeException: java.lang.IllegalArgumentException: Unable to resolve attribute [profileTo] against path [null]
The names of the fields or properties in the primary key class and the primary key fields or properties of the entity must correspond and their types must be the same