草庐IT

java - hibernate 多对多关联不更新连接表

在我的应用程序中,我在User和Preference实体之间建立了多对多关联。由于连接表需要一个额外的列,我不得不将其分解为2个一对多关联:用户实体:@OneToMany(mappedBy="user",fetch=FetchType.EAGER,cascade={CascadeType.PERSIST,CascadeType.MERGE},orphanRemoval=true)publicSetgetPreferences(){returnpreferences;}偏好实体:@OneToMany(mappedBy="preference",fetch=FetchType.EAGER)

java - 如何在 Hibernate 中以单向多对一的方式离开联接表?

我正在使用Howtojointablesinunidirectionalmany-to-onecondition?.如果你有两个类:classA{@IdpublicLongid;}classB{@IdpublicLongid;@ManyToOne@JoinColumn(name="parent_id",referencedColumnName="id")publicAparent;}B->A是多对一关系。我知道我可以将B的集合添加到A,但我不希望这种关联。所以我的实际问题是,是否有创建SQL查询的HQL或Criteria方法:select*fromAleftjoinBon(b.pare

java - Hibernate 延迟加载不适用于多对一映射

我的多对一映射存在性能问题。当我在日志文件中调试SQL查询时,主要查询没问题,但在我有其他查询表示多对一对象映射之后。实体.hbm.xml:SEQ_MY_ENTITY对象1.hbm.xml:对象2.hbm.xml:查询HBM:publicListfindByObject1Id(Integerobject1Id)throwsDataAccesException{Listresults=null;try{Queryquery=this.getSession().createQuery("fromEntityentwhereent.object1.id=:object1Id");query.

java - 是否可以从与 HQL 的多对多关联中批量删除?

如果是这样,语法是什么?假设我希望Foo的一个实例与Bar的所有实例无关:在SQL中,它只是:deletefromFOO_BAR_MAPPINGwhereFOO_ID=?在HQL中,我假设它会是这样的:deletefromBar.foosfooswherefoos.id=:id(其中foos是Foo的映射集合)但似乎是错误的,给出:org.hibernate.hql.ast.QuerySyntaxException:Bar.foosisnotmapped这甚至可以用HQL实现吗? 最佳答案 要回答您的具体问题,不,据我所知,HQL是

java - Ebean 多对多查询

我有两个类,user和car。两者都有ManyToMany相互映射。用户:@EntitypublicclassUserextendsModel{privateintyear;@ManyToMany(cascade=CascadeType.ALL)privateListcars;}汽车:@EntitypublicclassCarextendsModel{@ManyToMany(mappedBy="cars",cascade=CascadeType.ALL)privateListusers;}使用ebean,我只想查询1999年以来在其列表中提供用户的那些汽车。我不想在Java代码中迭代用

Java:多对象变量(静态)

我是面向对象编码的新手,我遇到了以下问题。(注意this解决方案是我问题的一部分)我需要一个许多对象都可以引用的变量,但要为每个对象保留一些“私有(private)”信息。更具体地说,我创建了一个名为Worker的类,我希望该类的每个对象都有一个int类型的唯一ID。所以,第一个对象有ID=1,第二个对象有ID=2等...请注意,我不想要一个随机整数,而我需要从0和递增...类中变量的声明和初始化staticprivateintworkId=0;我试图通过在构造函数体中添加这行代码来实现自增workId++;我实例化一些对象,将它们添加到ArrayList并使用for循环打印每个对象的

java - 多对多关系的属性 (Hibernate)

我有实体类A和C。它们正在映射表tblA和tblC,它们之间存在多对多关系,tblB在它们之间进行映射。tblB包含A_ID、C_ID和SetDate,最后一个是设置日期,因此是关系的属性。我的问题是,我如何最好地映射到这个属性中?目前它们未映射,如下所示:答:@ManyToMany(targetEntity=C.class,cascade={CascadeType.PERSIST,CascadeType.MERGE})@JoinTable(name="tblB",joinColumns=@JoinColumn(name="A_ID"),inverseJoinColumns=@Join

java - 为什么我需要第三个表来进行多对多映射?为什么我不能只使用两个表?

我一直在尝试多对多两个类Person和Address之间的关系。我不知道,但在某个地方我没有按照正确的思路思考。例如对于多对多映射,我制作了两个表CREATETABLEperson(p_idINTEGER,p_nameTEXT,PRIMARYKEY(p_id));CREATETABLEaddress(a_idINTEGER,addressTEXT);然后我在映射xml中尝试了一些东西。在一些不成功的尝试之后,我读到你需要三个表来进行多对多映射,就像answer一样。对我的一个问题说。请解释一下这是什么原因?为什么我需要第三张table?为什么我不能仅与两个表建立关联?

java - JPA/Hibernate 双向多对一导致 StackOverflowException

我有具有双向一对多关系的实体User和GrantedRole。当我尝试将GrantedRole添加到User中的Set时,没有抛出异常,但是当我调试User和GrantedRole对象的变量时,有一个描述com.sun.jdi.InvocationExceptionoccurredinvokingmethod.变量的不同字段可以在调试时读取,但是当我选择User中的roles字段或GrantedRole中的user字段时,我得到与上面相同的描述。当我进入用户中的GrantedRole集合时,我最终找到了以下描述:Detailformattererror:Anexceptionoccur

java - 双向多对多关系中的循环引用

我的实体中存在双向多对多关系。请参见下面的示例:publicclassCollaboration{@JsonManagedReference("COLLABORATION_TAG")privateSettags;}publicclassTag{@JsonBackReference("COLLABORATION_TAG")privateSetcollaborations;}当我尝试将其序列化为JSON时,出现以下异常:`"java.lang.IllegalArgumentException:Cannothandlemanaged/backreference'COLLABORATION_T