您的位置:首页 > 编程语言 > Java开发

spring data jpa 查询部分属性

2016-09-26 15:07 351 查看
两个方法:1、使用自定义的sql查询;2、封装一个类用于输出。

Dao:

@Service
public class OperatorServiceImpl implements OperatorService {
@Autowired
OperatorRepository operatorRepository;

public OperatorRepository getOperatorRepository() {
return operatorRepository;
}

private EntityManagerFactory emf;

@PersistenceUnit
public void setEntityManagerFactory(EntityManagerFactory emf) {
this.emf = emf;
}

//方法1
@Override
public List<Operator> list() throws Exception {
EntityManager em = emf.createEntityManager();
Query query = em.createNamedQuery("getUsers");
List<Object[]> list = (List<Object[]>) query.getResultList();
List<Operator> operatorList = CastEntity.castEntity(list, Operator.class);
em.close();
return operatorList;
//        Sort s = new Sort(Sort.Direction.DESC,"id");
//        return operatorRepository.findAll();
}

//方法2:
@Override
public List<SimpleOperator> listOperator() {
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("select new com.jiapeng.xfw.server.normalClass.SimpleOperator(p.userId,p.name,p.userType) from Operator p order by p.userId desc");
List result = query.getResultList();
return result;
}

}


方法一的对应的Entity的写法:

@NamedNativeQueries({
@NamedNativeQuery(name = "getUsers",
query = "select id,username,usertype from t_xfw_operator order by id desc",
resultSetMapping = "usersMap")
})
@SqlResultSetMappings({
@SqlResultSetMapping(name = "usersMap",
entities = {},
columns = {
@ColumnResult(name = "id"),
@ColumnResult(name="username"),
@ColumnResult(name="usertype")
})
})
@Entity
@Table(name = "operator")
public class Operator {

@Id
@GeneratedValue
@Column(name = "id")
private int userId;

@Column( name = "userName", unique = true,nullable = false)
private  String name;

@Column(name = "passWord")
private  String passWord;

@Column(name = "userType")
@Enumerated(value = EnumType.ORDINAL)
private EnumOperatorType userType;

@ManyToMany(
fetch = FetchType.LAZY,
targetEntity = com.jiapeng.xfw.server.entity.Rights.class)
@JoinTable(name = "operator_rights",
joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "right_id",referencedColumnName = "id")}
)
@OrderBy("id")
private List<Rights> rightses;

public List<Rights> getRightses() {
return rightses;
}

public void setRightses(List<Rights> rightses) {
this.rightses = rightses;
}

public EnumOperatorType getUserType() {
return userType;
}

public void setUserType(EnumOperatorType userType) {
this.userType = userType;
}

public int getUserId() {
return userId;
}

public void setUserId(int userId) {
this.userId = userId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassWord() {
return passWord;
}

public void setPassWord(String passWord) {
this.passWord = passWord;
}

public Operator(){
super();
}

public Operator(Integer id,String username){
super();
this.userId=id;
this.name= username;
}

//这个构造函授必须
public Operator(Integer id,String username,Integer userType){
super();
this.userId=id;
this.name= username;
this.userType = EnumOperatorType.valueOf( userType);
}
}


方法二中的对应输出类:

public class SimpleOperator {
private Integer userId;
private  String name;
private  EnumOperatorType userType;

public EnumOperatorType getUserType() {
return userType;
}

public void setUserType(EnumOperatorType userType) {
this.userType = userType;
}

public Integer getUserId() {
return userId;
}

public void setUserId(Integer userId) {
this.userId = userId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

//这个构造函授必须,注意userType的类型为Object
public SimpleOperator(int userId,String name,Object userType){
super();
this.userId = userId;
this.name = name;
this.userType = (EnumOperatorType)userType;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息