gpt4 book ai didi

java - 如何获取属于一项调查的所有问题?

转载 作者:行者123 更新时间:2023-12-02 02:47:48 27 4
gpt4 key购买 nike

首先,我对数据库的东西不太有经验,所以请怜悯我。我有2个实体类。调查和问题。

@Entity
@Table
public class Survey {

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

private String surveyName;

private int questionCount;

private String owner;

private int participant;

@OneToMany(mappedBy= "survey", cascade=CascadeType.ALL)
private List<Question> question = new ArrayList<Question>();

@Entity
@Table
public class Question {

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

private String question;

private int index;

@ManyToOne
@JoinTable
private Survey survey;

我很难编写正确的查询来获取属于一项 HQL 调查的所有问题。也许有人可以给我一个正确方向的提示,或者给我一个如何做的例子。

最佳答案

有两种方法可以获得调查的所有问题:

1。遍历托管关联

您建模了 bidirectional many-to-one association 。因此,如果您已经加载了 Survey 实体,则可以对该实体调用 getSurvey() 方法。然后 Hibernate 将生成并执行查询以获取调查实体。
有多种方法可以optimize that if you're experiencing n+1 select issues 。但这是一个更高级的话题。

2。实现查询

如果您不需要 Survey 实体,最好使用仅加载 Survey 实体的 JPQL 查询。 JPQL 的语法与 SQL 非常相似,我在我的 guide to JPQL 中详细解释了它。 .
以下查询返回与查询关联的所有调查实体。

TypedQuery<Question> q = em.createQuery("SELECT q FROM Survey s JOIN s.question q WHERE s.id = :id", Question.class);
q.setParameter("id", id);
q.getResultList();

关于java - 如何获取属于一项调查的所有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com