我有一个班级评语:
@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;
}
保留comment类可以工作,但以下条件查询是有效的:
Criteria criteria = session.createCriteria(Comment.class)
.add(Restrictions.eq("commentTopics", topic));
List<Comment> entries = criteria.list();
抛出org.hibernate.exception.DataException:未为参数%1指定值。
这是生成的查询:
选择this_.comment_id作为comment1_0_0_,this_.comment_id作为comment0_0_,commenttop2_.comment_id作为comment1_0_2_,commenttop2_.topic作为topic2_从comments_left outer连接comments_topic commenttop2_在this_.comment_id=commenttop2_.comment_id的位置this_.comment_id=?
我是否使用了不正确的注释?
是否未正确构造条件查询?
我将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;
问题内容: 考虑以下两个关系: 连接表ATag没有相应的实体类。现在,我想获取所有名为Tag1的Tag的Foo实例,是否可以仅使用Criteria? 子查询可能会有所帮助,但是,我无法为不存在的类ATag.class创建DetachedCriteria。 问题答案: 只是处理这个确切的问题。您在表中而不是对象中思考。只是参考,让Hibernate负责其余的工作: 如果您看到SQL Hibernat
我在Eclipselink2.3.2中使用JPA2.0,在其中,我在产品和它们的颜色之间建立了多对多的关系。一个产品可以有多种颜色,一种颜色可以与多种产品相关联。这种关系在数据库中由三个表表示。 null 很明显,实体类有一组颜色-,它被命名为。 实体类有一组产品-,它被命名为。 我需要根据提供的与表中的颜色不匹配的从表中获取颜色列表。 对应的JPQL如下所示。 它生成以下SQL语句。 因为这将是
问题内容: 我有2个班级,他们之间有很多关系。我以“问题”和“标签”为例,以使情况更易于理解。 对于每个问题,您都有几个标签。与标签相同。 我想做的是,如果问题包含一个标签为“hibernate”,则获取所有问题(及其相应的标签)。 我最多可以使用多对多表中的SQLQuery并返回问题ID的列表。然后使用带有限制条件的条件并抓住所有问题。但这太笨拙了,我敢打赌,有更好的方法可以做到吗? 问题答案:
我在枚举中有6个值,使用6 if else是一种很糟糕的做法。我们能以更好的方式实现这一点吗?下面是我的场景: 我在考虑switch,但并没有太大的区别,我还需要根据某些参数在doA()内返回一个布尔值。 提前谢谢。
我遇到了一些jackson多态问题。 我工作在一个web JDR字符编辑器个人项目。我使用springboot并试图坚持哲学。此外,我尝试做一些独立的包,因为学习案例为我的真正工作(另一个springboot项目)。 没有jackson配置,我没有问题序列化一个能力。但是当我试图恢复web编辑器上的任何修改时,所以当jackson对一个能力进行反序列化时,“dependance”属性就会出现问题。
我一直在使用多对多映射,这里是我的POJO类。 Menu.java: 使用者爪哇: 我有用户,菜单和第三个映射表这是自动创建的,我成功地得到结果时,在mysql中执行以下查询 我想在Hibernate中写这个查询如何处理这个东西???