我想使用休眠標準api來獲取僅基於USER_ID
的主題,但不知道如何使用條件來做到這一點。休眠標準一對多問題
我的表是 「topic_users」(下)
和 「主題」 表(如下圖)
我知道如何使用SQL做到這一點,這將是這樣的:
SELECT TOPICNAME
FROM topic_users INNER JOIN topics on topic_users.TOPICS_TOPICS_ID = topics.TOPICS_ID
WHERE topic_users.USER_ID = 1
這將返回所有TOPICNAME
的USER_ID
1這正是我想要的,但我如何使用Hibernate Criteria來做到這一點。到目前爲止,我在我的Repository類中有這個(見下文),但是這隻會返回一個高度嵌套的JSON數組。我可以遍歷對象,使用DTO並構建我的響應,或者嘗試Hibernate createSQLQuery
方法,它可以讓我直接調用本地SQL語句(還沒有嘗試過)...但我正在嘗試學習Criteria我希望任何人都可以回答我的問題。
@Repository("userTopicsDao")
public class UserTopicsDaoImpl extends AbstractDao<Integer, UserTopics>implements UserTopicsDao {
@Override
public List<UserTopics> findMyTopics(int userId) {
Criteria crit = createEntityCriteria();
crit.add(Restrictions.eq("userId", userId));
List<UserTopics> userTopicsList = (List<UserTopics>)crit.list();
return userTopicsList;
}
和我TOPIC_USERS
實體,我已經從地映射TOPICS
@Entity
@Table(name="TOPIC_USERS")
public class UserTopics {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="TOPICUSER_ID")
private Integer id;
@Column(name="USER_ID")
private Integer userId;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "TOPICS_ID")
private Set<Topics> topicsUser;
//getter and setters
你可以添加Topic實體類嗎? –