我有一个从外部代码获取JPA实体的服务。在此服务中,我想遍历一个延迟加载的集合,该集合是该实体的一个属性,以查看客户端是否向其添加了相对于数据库中当前版本的内容。但是,客户端可能从未接触过该集合,因此它仍未初始化。这导致了众所周知的org.hibernate.LazyInitializationException:延迟初始化角色集合失败:com.example.SomeEntity。当然,如果客户从未接触过该集合,我的服务就不必检查它是否有可能发生的变化。问题是我似乎无法找到一种方法来测试集合是否已初始化。我想我可以在它上面调用size()如果它抛出LazyInitialization
我正在尝试在我的新项目中使用CriteriaAPI:publicListfindEmps(Stringname){CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQueryc=cb.createQuery(Employee.class);Rootemp=c.from(Employee.class);c.select(emp);c.distinct(emp);Listcriteria=newArrayList();if(name!=null){ParameterExpressionp=cb.parameter(String.class,
我一直在阅读几篇文章,什么是JPA(JavaPersistentAPI)以及支持它的供应商(DataNucleus、JBossHibernate等)我没有使用ORM(对象关系映射)的经验。到目前为止,我所做的是使用DTO和DAO编写自己的数据库类。到目前为止,我对我所拥有的感到高兴,但想知道为什么人们使用JPA而不是包含SQL的Java文件。对我来说,我觉得像下面这样写DAO类就可以了。publicclassDAOUsers{publicvoidinsertNewUser(DTODtoUser){Stringquery="INSERTINTOusers(username,address
以下三个字段的验证检查有什么区别?@EntitypublicclassMyEntity{@Column(name="MY_FIELD_1",length=13)privateStringmyField1;@Column(name="MY_FIELD_2")@Size(min=13,max=13)privateStringmyField2;@Column(name="MY_FIELD_3")@Length(min=13,max=13)privateStringmyField3;//getter&setter}我读到第一个与DDL的东西有关。第二个是用于bean验证。第三个是hiberna
我有三个类,其中一个是用户,这个用户有其他类实例。像这样;publicclassUser{@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)publicListaPosts;@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)publicListbPosts;}publicclassBPostextendsPost{@ManyToOne(fetch=FetchType.LAZY)publicUseruser;}publicclassAPostextendsPost{
我正在为想要使用延迟初始化的客户开发一个项目。使用默认延迟加载模式映射类时,它们总是会出现“延迟初始化异常”。@JoinTable(name="join_profilo_funzionalita",joinColumns={@JoinColumn(name="profilo_id",referencedColumnName="profilo_id")},inverseJoinColumns={@JoinColumn(name="funzionalita_id",referencedColumnName="funzionalita_id")})//@ManyToMany(fetch=Fe
也许这是一个愚蠢的问题,但它困扰着我。我有员工与车辆的双向一对多关系。当我第一次在数据库中持久化一个员工(即它没有分配的ID)时,我还希望保留其关联的车辆。目前这对我来说很好,除了我保存的Vehicle实体没有自动映射关联的Employee,并且在数据库中Vehicle表中的employee_id外键列为空。我的问题是,是否可以在保留员工本身的同时保留Vehicle的员工?我意识到需要先保存员工,然后再保存车辆。JPA可以自动为我执行此操作吗?还是我必须执行以下操作:Vehiclevehicle1=newVehicle();Setvehicles=newHashSet();vehicl
这(应该)是一件相当简单的事情,但是我很挣扎。我想要这样生成一个表格:idorganizationNumbernameHowever,whenIlookinthedatabase,Iseethattheorderingiswrong.DoesanybodyknowhowIcanforcehibernate/jpatogeneratethetablewithcorrectordering?descOrganization;+--------------------+--------------+------+-----+---------+----------------+|Field|
假设我有以下POJO:publicclassMyThing{privateintmyNumber;privateStringmyData;//assumegetter/settermethods}现在可以将此POJO扩展为JPA实体吗?@Entity@Table(name="my_thing")publicclassMyThingEntityextendsMyThingimplementsSerializable{@Column(name="my_number")//?????????@Column(name="my_data")//????????}我想将POJO与JPA实体分开。P
您在JPA域模型中使用以下哪种集合类型以及原因:java.util.Collectionjava.util.Listjava.util.Set我想知道这是否有一些基本规则。UPDATE我知道Set和List之间的区别。List允许重复并具有顺序,而Set不能包含重复元素且不定义顺序。我在JPA的背景下问这个问题。如果您严格遵循定义,那么您应该始终使用Set类型,因为您的集合存储在关系数据库中,您不能在其中重复并且您自己定义了一个订单,即JavaList中的顺序不一定保留在数据库中。例如,我大部分时间都在使用List类型,不是因为它有顺序或允许重复(反正我不能有),因为其中的一些组件我的