java框架hibernate中如何只关联其他对象的一部分属性
比如user类和group类是多对一关系我原来是这么写的publicclassUser{privateintid;privateStringname;privateGro...
比如user类和group类 是多对一关系
我原来是这么写的
public class User{
private int id;
private String name;
private Group g;
...
}
我领导说不建议这么写,因为关联的group对象属性太多 没意义都查询出来
他的意思是
public class User{
private int id;
private String name;
private int groupId;
private String groupName;
...
}
这样就只查询group的id和name两个属性 那这样的话 我在查询的时候怎么写hql语句啊?而且我们用注解配置关联关系该怎么配置?
谢谢
这样的话就没有对应的实体类作为关联了 怎么在User类里用注解关联Group类啊 展开
我原来是这么写的
public class User{
private int id;
private String name;
private Group g;
...
}
我领导说不建议这么写,因为关联的group对象属性太多 没意义都查询出来
他的意思是
public class User{
private int id;
private String name;
private int groupId;
private String groupName;
...
}
这样就只查询group的id和name两个属性 那这样的话 我在查询的时候怎么写hql语句啊?而且我们用注解配置关联关系该怎么配置?
谢谢
这样的话就没有对应的实体类作为关联了 怎么在User类里用注解关联Group类啊 展开
2个回答
展开全部
其实无所谓的,你就算下面那两个属性写成private int aaa,private String bbb 这样都行,只要在User这个类里面写上getset方法,然后对应xml里面复制上两个字段改一下名字,变成aaa和bbb就行,到时候你hql语句变一下就行,比如select new Map(g.groupid as aaa,g.groupName as bbb,u.id,u,name) from User u join Group g 这样就行了,到时候你在页面直接用User里面的属性取就OK,没必要配什么东西。
更多追问追答
追问
那groupId和groupName还有必要作为user表的字段么?groupId是有必要的 groupName还有必要么?groupName用不用加transient注解不作为持久化字段?
追答
什么都不需要,刚才也说错了,你仅仅需要在User.java这个类里加那两个字段,加getset就OK,语句按我那么写。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询