在我的示例中,Employee与Department具有CascadeType.PERSIST的OneToOne关系。当我坚持多个Employee,为什么EntityManager为所有Employee记录保留一个Department记录?我的期望是,如果我们使用CascadeType.PERSIST,当一个Employee被持久化时,一个Department记录将被重新创建每个Employee记录。员工.java@EntitypublicclassEmployee{privateStringid;privateStringname;@OneToOne(cascade=CascadeT
我想使用Hibernate注释来表示使用连接的单向一对多关系。我想在连接上添加一个条件,这样它只会在源表(“一个”)中的列等于一个常量值时发生。例如。SELECT*FROMbuildingsbLEFTJOINbuilding_floorsbfonbf.building_id=b.idANDb.type='OFFICE'我想表示该查询的b.type='OFFICE'部分。我的问题与这个问题非常相似,只是我在源表上有一个条件。JPA/HibernateJoinOnConstantValueJava实体如下所示:@Entity@Table(name="buildings")publiccla
我正在使用JPA2和EclipseLink实现。我只是想将当前日期保存到MySQL数据库的DateTime列中。应该持久化的日期对象被简单地创建了:importjava.util.DateDatecurrentDate=newDate();现在currentDate包含准确的日期和时间。此对象保存在具有以下列的表中:@Column(name="DATE_CREATED")@Temporal(TemporalType.DATE)DatedateCreated;TemporalType具有三个常量:DATE-这会在数据库中保存没有任何时间的日期:(2012-02-2300:00:00)TI
我正在为框架生成的查询寻找可能的优化。据我了解,流程如下:您可以将域对象声明为POJO并添加多个注释,例如@Entity、@Table、@ManyToOne等。您声明您的存储库,例如每个接口(interface)对于(2),您有多个选项来描述您的查询:例如每个方法名称或@Query如果我写这样的查询:@Query("selecttfromOrdertLEFTjoinfetcht.orderPositionswheret.id=?1")PagefindById(Pageablepageable,Stringid);一个SQL查询是自动生成的,其中订单的每一列都被解析,随后是订单位置和依赖
我必须设计一个数据模型(在JavaEE6应用程序中),它将通过JPA持久化,并且还需要通过JAXB进行序列化。上次我这样做时,我有一组带有JAXB注释的实体类,另一组带有JPA注释。这意味着我必须有很多样板代码才能在两者之间进行转换。我正在考虑将它们结合起来,以便每个类都具有两种类型的注释。我知道这可以完成,但我的问题是,应该吗?会不会有什么问题? 最佳答案 这绝对可以做到。实际上,我发现维护代码以在模型之间复制的前景更成问题。EclipseLink是此应用程序的绝佳选择,因为它包含JPA(EclipseLink是RI,从TopLi
到目前为止,我所知道的是FindBy可以返回多个结果,而FindOneBy将返回单个结果或当我们按以下方式使用它时返回null。ListfindByDepartmentName(Stringname);DepartmentfindOneByDepartmentId(LongId);现在,我的问题是,我可以通过这种方式使用findBy吗?DepartmentfindByDepartmentId(LongId);如果是,假设给定ID有多个记录。findBydepartmentId基于什么返回单条记录?最后,我什么时候或为什么不应该使用findBy代替findOneBy?
我有下表:FOLDER[idint,namevarchar2(10),parent_folder_idint]我希望Folder类具有父子关系。 最佳答案 我相信正确的映射是:@EntitypublicclassFolder{@Id@Column(name="PK_FOLDER")privateintid;@Column(name="NAME")privateStringname;@ManyToOne@JoinColumn(name="FK_PARENT_FOLDER")publicFolderparentFolder;@OneTo
因此,经过10多年的休息后,我将回到Java并尝试使用JPA和Java泛型。我创建了一个基于泛型的findAll(other)JPA查询,它基本上可以执行SELECT*FROMsourceWHEREother_id=other.id;这就是我要去的地方。它有效,但我想知道是否有更好、更清洁的方法来做到这一点。使用ManagedType很困难,而且没有太多完整的文档或简单的示例。我决定让我的代码尽可能通用(没有双关语意),所以我使用JPA2。这是所有实体类的根。我可能不需要它,但它可以防止我犯基本错误。importjava.io.Serializable;publicabstractcl
我正在使用JPA在基于JavaEE的Web应用程序中加载和保留实体。Hibernate用作JPA的实现,但我不使用Hibernate特定的功能,只使用纯JPA。这是一些DAO类,注意getOrders方法:classOrderDao{EntityManagerem;ListgetOrders(LongcustomerId){Queryq=em.createQuery("SELECToFROMOrderoWHEREo.customerId=:customerId");q.setParameter("customerId",customerId);returnq.getResultList
JPA2是否有任何运行递归查询的机制?这是我的情况:我有一个实体E,它包含一个整数字段x。它也可能有E类型的child,通过@OneToMany映射。我想做的是通过主键找到一个E,并获得它的x值,以及它所有后代的x值。有没有办法在单个查询中执行此操作?我正在使用Hibernate3.5.3,但我不希望对HibernateAPI有任何显式依赖。编辑:根据thisitem,Hibernate没有有这个特性,或者至少在3月份没有。所以JPA似乎不太可能拥有它,但我想确定一下。 最佳答案 使用简单的邻接模型,其中每一行都包含对其父项的引用,