簡體   English   中英

休眠標准查詢多個枚舉

[英]Hibernate Criteria Query for many to many Enum

我有一堂課評論:

@Entity
@Table(name = Constants.COMMENTS_TABLE)
@Audited
public class Comment {


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

@ElementCollection(targetClass = CommentTopic.class)
@Enumerated(EnumType.STRING)
@Fetch(value = FetchMode.JOIN)
@CollectionTable(name = Constants.COMMENTS_TOPIC_JOIN_TABLE, joinColumns = @JoinColumn(name = "comment_id"))
@Column(name = "topic")
private Set<CommentTopic> commentTopics;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "comment_id", nullable = false)
private Long commentId;
}

保留注釋類有效,但可以查詢以下條件:

Criteria criteria = session.createCriteria(Comment.class)
         .add(Restrictions.eq("commentTopics", topic));

List<Comment> entries = criteria.list();

拋出org.hibernate.exception.DataException:沒有為參數1指定值。

這是建立的查詢:

從注釋this_中,從this_.comment_id = commenttop2_.comment_id上的外部加入comment_topic commenttop2_的注釋中選擇this_.comment_id作為注釋1_0_0_,this_.comment作為注釋0_0_,commenttop2_.comment_id作為注釋1_0_2_,commenttop2_.topic作為topic2_。

我使用的注釋不正確嗎?

條件查詢是否構建正確?

我將CommentTopic枚舉放在CommentTopicWrapper類中。

我將commentTopicsSet的注釋更新為:

@OneToMany(targetEntity = CommentTopicWrapper.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = Constants.COMMENTS_TOPIC_JOIN_TABLE, joinColumns = @JoinColumn(name = "comment_id"), inverseJoinColumns = @JoinColumn(name = "topic"))
private Set<CommentTopicWrapper> commentTopics;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM