【发布时间】:2017-01-20 20:41:58
【问题描述】:
我正在尝试使用 Hibernate Criteria 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
这将返回 USER_ID 1 中的所有 TOPICNAME,这正是我想要的,但是我如何使用 Hibernate Criteria 做到这一点。到目前为止,我的 Repository 类中有这个(见下文),但这只会返回一个高度嵌套的 JSON 数组。我可以遍历对象,使用 DTO 并构建我的响应,或者尝试 Hibernate createSQLQuery 方法,它可以让我直接调用本机 SQL 语句(还没有尝试过)......但我正在尝试学习标准,所以我希望任何人都可以回答我的问题。
@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实体类吗?
标签: java hibernate jpa hibernate-criteria