/*
* Copyright 2015, The Querydsl Team (http://www.querydsl.com/team)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.querydsl.sql;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.PathMetadataFactory;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.QBean;
import com.querydsl.core.types.dsl.BeanPath;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.StringPath;
public class QBean2Test {
// @Table("PERSON")
public static class QPerson extends RelationalPathBase<QPerson> {
private static final long serialVersionUID = 609527362;
public static final QPerson person = new QPerson("PERSON");
public final StringPath firstName = createString("firstName");
public final NumberPath<Integer> id = createNumber("id", Integer.class);
public final StringPath lastName = createString("lastName");
public QPerson(String variable) {
super(QPerson.class, PathMetadataFactory.forVariable(variable), "", "PERSON");
addMetadata();
}
public QPerson(BeanPath<? extends QPerson> entity) {
super(entity.getType(), entity.getMetadata(), "", "PERSON");
addMetadata();
}
public QPerson(PathMetadata metadata) {
super(QPerson.class, metadata, "", "PERSON");
addMetadata();
}
public void addMetadata() {
addMetadata(firstName, ColumnMetadata.named("FIRST_NAME"));
addMetadata(lastName, ColumnMetadata.named("LAST_NAME"));
addMetadata(id, ColumnMetadata.named("ID"));
}
}
public static class Person {
private int id;
private String firstName;
private String lastName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@Test
public void newInstance() {
QPerson p = QPerson.person;
QBean<Person> projection = Projections.bean(Person.class, p.id, p.firstName.as("firstName"), p.lastName.as("lastName"));
Person person = projection.newInstance(3, "John", "Doe");
assertEquals(3, person.getId());
assertEquals("John", person.getFirstName());
assertEquals("Doe", person.getLastName());
}
}