我有一个名为Student实体,它有几个与Student相关的字段,还有一个具有一个任何关系的主题列表。在这里,我需要得到所有的字段,包括主题列表,除了“图像”,因为它使用更多的内存,它需要很长的时间来检索所有行。有没有人可以说,如何创建投影和标准,以检索这个学生对象,没有图像字段单独?有没有像“AliastObeAnneStedResultTransformer”这样的自定义结果转换器?因为在我将主题列表作为一个或多个关系的情况下,这将不起作用。
@Entity
@Table(name="STUDENT")
public class Student {
@id
private long studentId;
private String name;
private String dob;
private int age;
@Lob
private byte[] image;
@Lob
private byte[] imageTnail;
@OneToMany(mappedBy="subject", cascade = CascadeType.ALL, orphanRemoval=true)
private List<Subject> subjects;
//setter & getter...
}
@Entity
@Table(name="SUBJECT")
public class Subject {
@id
private long subjectId;
private String subjectName;
@ManyToOne
@JoinColumn(name="studentId")
private Student student;
}
编辑
List<Student> results = getSession().createCriteria(Student.class)
.setProjection( Projections.projectionList()
.add( Property.forName("studentId"))
.add( Property.forName("name") )
.add( Property.forName("dob"))
.add( Property.forName("age"))
).setResultTransformer(Transformers.aliasToBean(Student.class)).list();
System.out.println("StudentDaoImpl.getStudents()"+results.get(0).getName());
首先,mappedby
属性必须包含外键的名称,因此必须进行以下更正:
@OneToMany(mappedBy="student", cascade = CascadeType.ALL, orphanRemoval=true)
private List<Subject> subjects;
其次,是的,您可以检索学生列表,而不需要获取他们的图像:
List<T> results = session.createCriteria(Student.class)
.setProjection( Projections.projectionList()
.add( Property.forName("studentId") )
.add( Property.forName("name") )
.add( Property.forName("dob") )
.add( Property.forName("age") )
)
.setResultTransformer(Transformers.aliasToBean(Student.class);
.list();
如果您希望获得特定学生
List<T> results = session.createCriteria(Student.class)
.setProjection( Projections.projectionList()
.add( Property.forName("studentId") )
.add( Property.forName("name") )
.add( Property.forName("dob") )
.add( Property.forName("age") )
).add( Restrictions.eq("studentId", @idAsParam ) )
.setResultTransformer(Transformers.aliasToBean(Student.class);
.list();
第一个对象将持有该对象。
我需要使用MapStruct将一些实体和实体列表转换为单个DTO。此DTO包括嵌套列表。 假设,我有以下持久性支持的POJO: 以及这些实体的一些集合: DTO如下所示: 和嵌套的DTO: 除SomeLink列表外,我需要从实体映射的所有字段: 我填充的嵌套列表如下: 结果涉及大量手动转换: 有没有办法通过使用MapStruct的功能来完成同样的工作?就像这样:
作为条件表达式的结果,我很难获得相关实体对象的列表。我有两个具有多对多关系的对象 但是,这并不像预期的那样有效,因为投影API似乎只支持投影标量属性,而不支持投影实体对象。是否可以通过投影或其他标准API指定这种类型的选择?
我有一个关于嵌套列表投影界面用法的问题。我有两个实体(父和子)(它们有单向关联) 父级=> 子=> 我有两个选择特定列投影界面。 这个查询可以工作,但是它选择ChildEntity的所有列,并且只将id、name propeties映射到ChildProjection。(生成的查询选择所有列,但我想只选择id和name列) 我如何只选择id和name列(为嵌套列表投影界面选择特定列)并映射到Chi
我在JPA中使用Micronaut数据,并且有两个实体。第一个是< code >配方: 第二个是,它指的是 : 现在我想在API中为DTO提供属性,但不提供整个实体,因为它包含MonyToOne和OneToMany关系,在这种情况下不需要。因此,我为此创建了投影 DTO: 并将< code>listAll()方法添加到< code > parse error repository 中: 但似乎Mi
你们知道如何忽略嵌套的“results”属性并直接获得列表吗?在这种情况下真的需要自定义反序列化器或包装器类吗? 谢了!
我想在Hibernate投影列表中获取嵌套对象值。我有Pojo“费用”和“关税”等级,有一对一和多对一的关系。 我的示例代码如下: 要价 关税 我想按收费模式从关税中提取金额值。 我编写的sql标准在ie中起作用。 选择tariff.amount,charge.name费用,关税charge.name喜欢's%'; 我尝试了以下标准。 我只是检查与restClient它返回空值。如何编写这个sql