问题描述
我需要获取具有搜索描述的组或该组具有的人名,但在标准中...现在我的标准是这样的,并按组描述返回我的搜索
public List<Group> getList(Authenticated auth,Integer firstRow,Integer maxRows,String search,String category,ColorTag tag) {
List<Group> lista = new ArrayList();
try {
Criteria cr = buildCriteria(auth,firstRow,maxRows,search,category,tag);
cr.addOrder(Order.asc("description"));
lista = cr.list();
} catch (Exception ex) {
LOG.error(ex.getCause());
}
return lista;
}
(构建标准方法)
private Criteria buildCriteria(Authenticated auth,ColorTag tag) {
Session session = sessionBuilder.getSession();
Criteria cr = session.createCriteria(persistentClass);
if (auth.isPerson()) {
cr.add(Subqueries.propertyIn("id",getSubQueryGroup(auth.getCodigo())));
}
if (search != null) {
Criterion ctrnName = Restrictions.like("description","%" + search + "%").ignoreCase();
cr.add(ctrnName);
}
if (category != null) {
Criterion ctrnCategory = Restrictions.eq("category",category);
cr.add(ctrnCategory);
}
if (tag != null) {
Criterion ctrnTag = Restrictions.eq("tag",tag);
cr.add(ctrnTag);
}
if (firstRow != null && maxRows != null) {
cr.setFirstResult(firstRow);
if (maxRows != ILIMITED_ROWS) {
cr.setMaxResults(maxRows);
}
}
return cr;
}
select distinct pg.* from person_group pg,person_group_item pgi,person p
where pg.pg_id = pgi.pgi_group and pgi.pgi_person = p.pe_id and (pg.pg_description like '%Tony%' or p.pe_name like '%Tony%')
这是person实体(有他们的gets和sets但太长了不能放在这里)
@Entity
@Table(name = "person_registered")
@PrimaryKeyJoinColumn(name="pe_id")
public class PersonRegistered extends Person {
private static final long serialVersionUID = -5401362547948278082L;
@ManyToOne
@JoinColumn(name = "per_rule")
private Docrule rule;
@Column(name = "pe_name",nullable = false,length = 100)
private String name;
@OnetoMany(cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.LAZY)
@JoinColumn(name = "jri_person",referencedColumnName = "pe_id")
private List<JoinRuleItemPerson> rules = new ArrayList();
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "per_expirydocs")
private Date expiryDocs;
@ManyToOne
@JoinColumn(name = "per_profile")
private ProfilePerson profile;
这是 group_item 实体
@Entity
@Table(name = "person_group_item")
public class GroupItem extends Auditable {
private static final long serialVersionUID = -6502688617876419560L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "person_group_item_seq")
@SequenceGenerator(name = "person_group_item_seq",sequenceName = "person_group_item_seq",allocationSize = 1)
@Column(name = "pgi_id")
private int id;
@Column(name = "pgi_group")
private int group;
@OnetoOne
@JoinColumn(name = "pgi_person",nullable = false)
private PersonRegistered person = new PersonRegistered();
@Column(name = "pgi_owner")
private boolean owner;
@OnetoOne
@JoinColumn(name = "pgi_monitor")
private PersonRegistered monitor;
@Override
public int getId() {
return id;
}
这是集团实体
@Entity
@Table(name = "person_group")
public class Group extends Auditable {
private static final long serialVersionUID = -7145128298547893120L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "person_group_seq")
@SequenceGenerator( name = "person_group_seq",sequenceName = "person_group_seq",allocationSize = 1)
@Column(name = "pg_id")
private int id;
@Column(name = "pg_description",length = 50)
private String description;
@OnetoMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name = "pgi_group",referencedColumnName = "pg_id")
private List<GroupItem> items = new ArrayList();
@Column(name = "pg_category",length = 50)
private String category;
@ManyToOne
@JoinColumn(name = "pg_project")
private Project project;
@ManyToOne
@JoinColumn(name = "pg_rule")
private Docrule rule;
@OnetoMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name = "jri_group",referencedColumnName = "pg_id")
private List<JoinRuleItemGroup> rules = new ArrayList();
@Column(name = "pg_tag")
private ColorTag tag = ColorTag.LIGHT;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)