我有以下型号:
@Entity
@Table(name = "SAMPLE_TABLE")
@Audited
public class SampleModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NAME", nullable = false)
@NotEmpty
private String name;
@Column(name = "SHORT_NAME", nullable = true)
private String shortName;
@ManyToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "MENTOR_ID")
private User mentor;
//other fields here
//omitted getters/setters
}
Run Code Online (Sandbox Code Playgroud)
现在我只想查询列:id
、name
、shortName
和mentor
引用User
实体(不是完整的实体,因为它有许多其他属性,我希望获得最佳性能)。
当我写查询时:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<SampleModel> query = builder.createQuery(SampleModel.class);
Root<SampleModel> …
Run Code Online (Sandbox Code Playgroud) 我有两个对象列表:
List<SampleClassOne> listOne;
List<SampleClassTwo> listTwo;
Run Code Online (Sandbox Code Playgroud)
SampleClassOne:
public class SampleClassOne{
private String myFirstProperty;
//ommiting getters-setters
}
Run Code Online (Sandbox Code Playgroud)
SampleClassTwo:
public class SampleClassTwo{
private String myOtherProperty;
//ommiting getters-setters
}
Run Code Online (Sandbox Code Playgroud)
RootSampleClass:
public class RootSampleClass{
private SampleClassOne classOne;
private SampleClassTwo classTwo;
//ommiting getters-setters
}
Run Code Online (Sandbox Code Playgroud)
现在我想根据条件将两个列表合并到RootSampleClass类型的新列表中:
if(classOneObject.getMyFirstProperty().equals(classTwoObject.getMyOtherProperty()){
//create new RootSampleClass based on classOneObject and classTwoObject and add it to another collection
}
Run Code Online (Sandbox Code Playgroud)
伪代码:
foreach(one: collectionOne){
foreach(two: collectionTwo){
if(one.getMyFirstProperty().equals(two.getMyOtherProperty()){
collectionThree.add(new RootSampleClass(one, two));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我对java 8感兴趣.我想在这里有最好的表现,这就是为什么我要求现有的解决方案而不编写自定义foreach.