- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个图像表,每个图像与一个画廊表都有多对多的关系。我正在尝试使用 org.hibernate.Criteria 返回链接到给定画廊列表的所有图像。
我一直在尝试以下操作,我循环遍历画廊列表并为每个画廊创建一个新的createCriteria
(例如,每个所需画廊一个内部连接),这仅适用于一个画廊。但是,当我尝试多次时,我收到 org.hibernate.QueryException:重复关联路径:画廊
错误...
ImagesDAOCustom.java
public Images getRandomImagesInGallerys(String[] galleryList) {
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(Images.class, "image");
// We want an image that is part of all galleries so we need to create
// a join per gallery.
for (String gallery: galleryList) {
criteria.createCriteria("image.galleries", gallery);
criteria.add(Restrictions.eq(gallery + ".name",gallery));
}
criteria.setProjection(Projections.distinct(Projections.property("id")));
List<Integer> imageIdList = criteria.list();
Images result;
if (imageIdList.size() > 0) {
int index = rand.nextInt(imageIdList.size());
result = imagesDAO.findOne(imageIdList.get(index));
} else {
result = null;
}
return result;
}
图像.java
public class Images {
@Id
@GeneratedValue
@Column(name="ugc_images_id")
private int id;
@JsonIgnore
@JsonView(Views.Internal.class)
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name="ugc_image_galleries", joinColumns={@JoinColumn(name="image_id")}, inverseJoinColumns={@JoinColumn(name="gallery_id")})
private Set<Galleries> galleries = new HashSet<>();
...
}
画廊.java
public class Galleries }
@Id
@GeneratedValue
@Column(name="ugc_galleries_id")
private int id;
@JsonManagedReference
@ManyToMany(mappedBy="galleries")
private Set<Images> images = new HashSet<>();
@Column(name="name")
private String name;
...
}
最佳答案
我遇到了同样的问题,我搜索了好几个小时。
这对我有用:
public Images getRandomImagesInGallerys(String[] galleryList) {
String query = "from Images ";
boolean first = true;
for(String string : galleryList) {
if(first){
query+="where '"+string+"' member of galleries ";
first=false;
} else {
query+="or '"+string+"' member of galleries ";
}
}
entityManager.createQuery(query, Images.class).getResultList();
}
希望它能帮助别人。
关于java - 迭代创建 createCriteria。出现错误 org.hibernate.QueryException : duplicate association path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134955/
我在不同的示例、教程、博客等中看到过这两种格式,但就我的生活而言,我找不到对差异的解释。有什么区别 ICriteria crit = session.CreateCriteria(typeof(Cat
我在不同的示例、教程、博客等中看到过这两种格式,但就我的生活而言,我找不到对差异的解释。有什么区别 ICriteria crit = session.CreateCriteria(typeof(Cat
我正在尝试创建一个REST服务,该服务以JSON格式返回结果。 我创建了一个将返回搜索结果的方法。它接受一个EnumMap搜索参数,并检查这些参数以建立createCriteria。 我遇到的问题是,
我怎样才能在 grails 中使用 createCriteria 获得类似这个 MYSQL 查询的内容? SELECT * FROM engine4_user_fields_val
刚刚了解createCriteria()方法的功能。只是想知道,除了将其应用于Controller之外,还有没有一种方法可以应用于域类?可能是自己映射到类似这样的属性: static mapping
我想获取在其列表(firstsList或SecondsList)中包含特定用户的实例。 在我的解决方案中,创建条件仅考虑第一批用户。 逻辑OR的用法似乎不正确 域 class ClassA {
我正在尝试使用 criteria 从数据库中获取数据 Domain class发票 - class Invoice{ Date invoiceNo Date invoiceDate
几个小时以来,我试图弄清楚如何使用一种必须在列表中的条件来创建条件。 如果减少代码,则有以下两个域类: 酒店-我要检索的基本域类: class Hotel { static hasMany =
能够使用分页是目标,但是我不确定如何使用它。该关系是单向的hasMany(如下所示)。目前,它可以在没有分页的情况下正常工作(请参阅Screenshot),但是要使用分页,我必须更改 Controll
我很好奇如何使用条件构建器访问继承的类的字段。 假设我们有以下类(class): class A { String fieldOne String fieldTwo static hasM
我是Grails条件构建器的新手,有人可以解释以下含义吗? def c = Account.createCriteria() def results = c {
我可以做到这一点: def criteria = Category.createCriteria(); def results = criteria.list{
def employee = Person.createCriteria().listDistinct { eq "personType" UserType.EMPLOYEE or {
我想写一个单元测试(通过 JUnit)来测试这个函数在 Groovy 中的值: String getPeopleNamesById(int[] peopleIds) { Lis
在 SQL 中我可以写 SELECT blah FROM Clients Where @p1 Like '%'+lastname+'%' 如何在 Nhibernate 中使用 CreateCriter
我在createCriteria中的查询中有一堆行,但是必须进行一些更改,我需要在一行中隐藏带有0的行,在另一列中隐藏带有字母A的行,但是如果它们有,我就不会隐藏它们0和另一个字母,如何在create
通过使用CreateCriteria,我想比较两个列表,并检查groups中users中是否存在至少一个元素。 有像eq这样的东西吗? 域 class User { String login
我有一个域类反馈 class Feedback{ String name String email Date createdOn Boolean isMailSent
场景是这样的: 每个Process具有多个ProcessingSteps 我编写的代码能够获取所有进程,而无需与ProcessingSteps对应。 我知道我缺少where子句,我想问一下我们如何在G
我在grails中有一个域类,该类具有一列字符串类型。下面是域类结构。 class TravelRequestUpdates{ updatedAt sqlType:'varchar(4
我是一名优秀的程序员,十分优秀!