草庐IT

java - JPA:如何根据 ID 以外的字段值获取实体?

在JPA(Hibernate)中,当我们自动生成ID字段时,假设用户不知道这个key。因此,在获取实体时,用户会根据ID以外的某些字段进行查询。在这种情况下我们如何获取实体(因为em.find()无法使用)。我知道我们可以稍后使用查询并过滤结果。但是,有没有更直接的方法(因为据我了解,这是一个非常普遍的问题)。 最佳答案 这不是你所说的“问题”。Hibernate具有内置的find(),但您必须构建自己的查询才能获取特定对象。我推荐使用Hibernate的Criteria:Criteriacriteria=session.creat

java - JPA:如何根据 ID 以外的字段值获取实体?

在JPA(Hibernate)中,当我们自动生成ID字段时,假设用户不知道这个key。因此,在获取实体时,用户会根据ID以外的某些字段进行查询。在这种情况下我们如何获取实体(因为em.find()无法使用)。我知道我们可以稍后使用查询并过滤结果。但是,有没有更直接的方法(因为据我了解,这是一个非常普遍的问题)。 最佳答案 这不是你所说的“问题”。Hibernate具有内置的find(),但您必须构建自己的查询才能获取特定对象。我推荐使用Hibernate的Criteria:Criteriacriteria=session.creat

java - 如何正确地将带有 "join fetch"子句的 JPQL "where"表达为 JPA 2 CriteriaQuery?

考虑以下JPQL查询:SELECTfooFROMFoofooINNERJOINFETCHfoo.barbarWHEREbar.baz=:baz我正在尝试将其转换为条件查询。这是据我所知:CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycq=cb.createQuery(Foo.class);Rootr=cq.from(Foo.class);Fetchfetch=r.fetch(Foo_.bar,JoinType.INNER);Joinjoin=r.join(Foo_.bar,JoinType.INNER);cq.where(

java - 如何正确地将带有 "join fetch"子句的 JPQL "where"表达为 JPA 2 CriteriaQuery?

考虑以下JPQL查询:SELECTfooFROMFoofooINNERJOINFETCHfoo.barbarWHEREbar.baz=:baz我正在尝试将其转换为条件查询。这是据我所知:CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycq=cb.createQuery(Foo.class);Rootr=cq.from(Foo.class);Fetchfetch=r.fetch(Foo_.bar,JoinType.INNER);Joinjoin=r.join(Foo_.bar,JoinType.INNER);cq.where(

java - Hibernate 中 JTA、JPA 和普通 JDBC 的区别

在Hibernate方面,JTA、JPA和普通JDBC有什么区别? 最佳答案 为了存在差异,应该有一些共同点,除了与数据库相关(尽管JTA不仅如此)之外,它们没有更多共同点:JPA是Java对象关系映射的标准-它指定了一组注释和一个接口(interface)-EntityManager以对映射的对象执行持久性操作。Hibernate实现了JPA标准plainJDBC是一种访问数据库的技术。它是Hibernate实际用于执行数据库操作的“幕后”。它使用JDBC向数据库发送查询。JTA是一个事务API,在Hibernate中是可选的。它

java - Hibernate 中 JTA、JPA 和普通 JDBC 的区别

在Hibernate方面,JTA、JPA和普通JDBC有什么区别? 最佳答案 为了存在差异,应该有一些共同点,除了与数据库相关(尽管JTA不仅如此)之外,它们没有更多共同点:JPA是Java对象关系映射的标准-它指定了一组注释和一个接口(interface)-EntityManager以对映射的对象执行持久性操作。Hibernate实现了JPA标准plainJDBC是一种访问数据库的技术。它是Hibernate实际用于执行数据库操作的“幕后”。它使用JDBC向数据库发送查询。JTA是一个事务API,在Hibernate中是可选的。它

java - JPA、Mysql Blob 返回数据过长

我的实体中有一些byte[]字段,例如:@EntitypublicclassServicePictureimplementsSerializable{privatestaticfinallongserialVersionUID=2877629751219730559L;//seam-genattributes(youshouldprobablyeditthese)@Id@GeneratedValueprivateLongid;privateStringdescription;@Lob@Basic(fetch=FetchType.LAZY)privatebyte[]picture;在我的

java - JPA、Mysql Blob 返回数据过长

我的实体中有一些byte[]字段,例如:@EntitypublicclassServicePictureimplementsSerializable{privatestaticfinallongserialVersionUID=2877629751219730559L;//seam-genattributes(youshouldprobablyeditthese)@Id@GeneratedValueprivateLongid;privateStringdescription;@Lob@Basic(fetch=FetchType.LAZY)privatebyte[]picture;在我的

java - JPA 对 Java 8 新日期和时间 API 的支持

我正在为我的新项目使用Java8。我正在尝试在java8中使用新的日期和时间API,但是我不知道JPA2.1是否完全支持这个新的日期和时间API。请分享您在JPA支持Java8中的新日期和时间API方面的经验/意见。我可以通过JPA2.1安全地使用Java8中的新日期和时间API吗?更新:我使用Hibernate(4.3.5.Final)作为JPA实现。 最佳答案 对于Hibernate5.X只需添加org.hibernatehibernate-java8${hibernate.version}和@NotNull@Column(na

java - JPA 对 Java 8 新日期和时间 API 的支持

我正在为我的新项目使用Java8。我正在尝试在java8中使用新的日期和时间API,但是我不知道JPA2.1是否完全支持这个新的日期和时间API。请分享您在JPA支持Java8中的新日期和时间API方面的经验/意见。我可以通过JPA2.1安全地使用Java8中的新日期和时间API吗?更新:我使用Hibernate(4.3.5.Final)作为JPA实现。 最佳答案 对于Hibernate5.X只需添加org.hibernatehibernate-java8${hibernate.version}和@NotNull@Column(na