如何连接与JPA / Hibernate

时间:2015-04-28 00:46:41

标签: java mysql hibernate jpa hibernate-mapping

我是Hibernate的新手,真的需要你们帮助.... 我有以下课程:UserActionPerUserResult

@Entity
@Table(name = "user_action_per_user_result")
public class UserActionPerUserResult {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "user_email", nullable = false)
    private String userEmail;

    @ManyToOne
    @JoinColumn(name = "user_action_id", nullable = false)
    private UserAction userAction;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name="user_action_per_user_result_email_message",
                  joinColumns={@JoinColumn(name="user_action_per_user_result_id", referencedColumnName="id")},
                  inverseJoinColumns={@JoinColumn(name="email_message_id", referencedColumnName="id")})
    @JsonIgnore
    private List<EmailMessage> emailMessages;

....getters/setter....
}

在MYSQL中,UserActionPerUserResult是一个表,对于电子邮件消息,还有另一个名为UserActionPerUserResultEmailMessage的表,其中包含与表UserActionPerUserResult的id相关联的电子邮件消息。

我将所有数据存储在MySQL表中,但是我无法查询它。我需要编写一个查询来获取emailMessages列表。我正在尝试以下方法,但它正在抛出异常。

TypedQuery<UserActionPerUserResult> messagesQuery =     entityManager.createQuery(
                    "SELECT e from UserActionPerUserResult e JOIN UserActionPerUserResult.emailMessages e1 WHERE e.id = 1 and e.userAction = 1", UserActionPerUserResult.class);
List<UserActionPerUserResult> resultList = messagesQuery.getResultList();

1 个答案:

答案 0 :(得分:3)

尝试编写如下查询:

first_name.zip(second_name).map{ |x| x.join(' ')}
  1. 联接正在使用根实体别名
  2. 当匹配数值
  3. 时,userAction.id用于针对userAction