如何在Hibernate中对子表设置条件

如何在Hibernate中对子表设置条件,hibernate,Hibernate,我有一个实体UserCredentials,它包含在另外两个实体MobileUser和Owner中 UserCredentials有一个SESSION\u ID应该返回我UserCredentials.ID,这样我就可以对MobileUser和/或所有者设置约束,比如: get owner where owner.userCredentials.id == userCredentials.getIdBySessionId(sessionId) 但我被困在这里: private

我有一个实体
UserCredentials
,它包含在另外两个实体
MobileUser
Owner

UserCredentials
有一个
SESSION\u ID
应该返回我
UserCredentials.ID
,这样我就可以对
MobileUser
和/或
所有者设置约束,比如:

get owner 
  where 
    owner.userCredentials.id == userCredentials.getIdBySessionId(sessionId)
但我被困在这里:

private long getOwnerId(Session session) throws NotFoundException {
    
    HttpServletRequest httpRequest = getThreadLocalRequest();
    String sessionId = httpRequest.getSession().getId();
    
    if(session.getTransaction().isActive() == false) {
        session.beginTransaction();
    }
    
    Criteria cr = session.createCriteria(UserCredentials.class);

    // HOW TO DO SOMETHING LIKE DESCRIBED ABOVE?
    
    @SuppressWarnings("unchecked")
    List<UserCredentials> credentials = cr.list();
    
    if(credentials.isEmpty()) {
        throw new NotFoundException("Session id not found: " + sessionId);
    }
    
    logger.log(Level.DEBUG, "Retrieving owner id of userId: " + credentials.get(0).getUserId());
    
    return credentials.get(0).getId();
}
UserCredentials.java

@Entity
@Table(name = "owner")
public class Owner implements Serializable {
    private static final long serialVersionUID = 5932700164951552452L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    @NotNull
    @OneToOne(cascade = CascadeType.PERSIST)
    private UserCredentials userCredentials;

    // ...
}
@Entity
@Table(name="user_credentials", 
    uniqueConstraints = { @UniqueConstraint(columnNames = { "USER_ID" }) 
    , @UniqueConstraint(columnNames = { "SESSION_ID" })})
public class UserCredentials extends AbstractTimestampEntity implements Serializable {
    private static final long serialVersionUID = -1749547554922053458L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;
    
    @Column(name="SESSION_ID")
    private String sessionId;
}