`

HQL o->m & m<-->n

阅读更多
from MenuGroup mg 

left join fetch  mg.menuNodes mns 

join  mns.enterpriseDepartments eds

where mg.id=mns.menuGroup and eds.id = ?



from MenuGroup mg  left join fetch  mg.menuNodes mns  这句参见我的另外一个日志

多对多采用 join(left join fetch) ,并且不用id直连


实体关系如下(只写出关键的代码了,呵呵):

MenuGroup  与 MenuNode  一对多

MenuNode   与 EnterpriseDepartment 多对多(单向关系)

@Entity
@Table(name = "PERMISSION_MENU_GROUP")
public class MenuGroup implements AccessPermission,IntOrderable{
        /**菜单所包含的菜单节点*/
	private List<MenuNode> menuNodes = new ArrayList<MenuNode>();
 
    @OneToMany(mappedBy="menuGroup")
	@LazyCollection(LazyCollectionOption.FALSE)
	public List<MenuNode> getMenuNodes() {
		return menuNodes;
	}
     //略
}




@Entity
@Table(name = "PERMISSION_MENU_NODE")
public class MenuNode implements AccessPermission,IntOrderable{

      /**企业会员部门*/
	private List<EnterpriseDept> enterpriseDepartments=new ArrayList<EnterpriseDept>();

     /**菜单所在组*/
	private MenuGroup menuGroup;

	@ManyToMany
	@JoinTable(
			name = "PERMISSION_MENUNODE_ENTER_DEPT", 
			joinColumns = { 
					@JoinColumn(name = "MENU_NODE_ID") 
					}, 
			inverseJoinColumns = { 
					@JoinColumn(name = "ENTERPRISE_DEPARTMENT_ID")
					})
	@LazyCollection(LazyCollectionOption.FALSE)
	public List<EnterpriseDept> getEnterpriseDepartments() {
		return enterpriseDepartments;
	}


	@ManyToOne
	@JoinColumn(name = "MENU_GROUP_ID",nullable=false)
	public MenuGroup getMenuGroup() {
		return menuGroup;
	}


     //略
}




@Entity
@Table(name = "ENTERPRISE_DEPT")
public class EnterpriseDept extends BasicDept{

     //略

}

@MappedSuperclass
public abstract class BasicDept implements java.io.Serializable, ValueObject<BasicDept>,Identityable{

    protected String id;

    
    @Id
    @Column(length = 32)
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    public String getId() {
	return id;
    }

    //略
}

分享到:
评论

相关推荐

    springMVC框架搭建及详解

    &lt;servlet-name&gt;spring&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;!-- 自定义servlet.xml配置文件的位置和名称 --&gt; &lt;init-param&gt; &lt;param-name&gt;...

    ssha 最新 最完整 配置信息

    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` ### 整合Spring与Hibernate #### Hibernate配置文件 **表格8**: hibernate.cfg.xml(自动生成) ```xml &lt;!DOCTYPE ...

    hibernate配置步骤文档

    &lt;property name="cache.provider_class"&gt;org.hibernate.cache.NoCacheProvider&lt;/property&gt; &lt;!-- 映射文件位置 --&gt; &lt;mapping resource="com/example/entity/User.hbm.xml"/&gt; &lt;/session-factory&gt; &lt;/hibernate-...

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》代码

    它的主要特性包括:对象-关系映射、查询语言(HQL)、事务处理、缓存策略等。掌握NHibernate,有助于开发者实现数据层的高效管理和可扩展性。 书中提供的代码部分,很可能是示例应用或者配套练习,涵盖了Spring.NET...

    解决J2EE开发中乱码问题

    &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-...

    《实战C#.NET编程-Spring.NET & NHibernate从入门到精通》代码部分

    NHibernate支持多种数据库,具备强大的查询能力,包括HQL(Hibernate查询语言)和 Criteria 查询,以及Linq-to-NHibernate。 本书的"代码部分"包含了一系列示例和项目,旨在帮助读者通过实践掌握Spring.NET和...

    瀚强HQL75D-2SA 480电源原理图.pdf

    "瀚强HQL75D-2SA 480电源原理图.pdf" 该资源是一个电源原理图,名称为HQL75D-2SA,输出电压为480V。下面是该原理图的详细知识点: 1. 电源架构:该电源原理图采用了双向变换器架构,输出电压为480V,适用于工业级...

    Hibernate 应用代码

    &lt;property name="connection.url"&gt;jdbc:mysql://localhost:3306/mydatabase&lt;/property&gt; &lt;!-- 数据库连接 URL --&gt; &lt;property name="connection.username"&gt;root&lt;/property&gt; &lt;!-- 数据库用户名 --&gt; &lt;property name=...

    hibernate笔记

    &lt;property name="connection.url"&gt;jdbc:mysql://localhost:3306/test&lt;/property&gt; &lt;!-- 数据库用户名 --&gt; &lt;property name="connection.username"&gt;root&lt;/property&gt; &lt;!-- 数据库密码 --&gt; &lt;property name=...

    spring2.5+hibernate3.2+struts2.0组合配置说明

    &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.Oracle10gDialect&lt;/prop&gt; &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt; &lt;/props&gt; &lt;/property&gt; &lt;property name="annotatedClasses"&gt; &lt;list&gt; &lt;value&gt;...

    hibernate 通用分页

    return new Page&lt;&gt;(pageNo, pageSize, totalCount, records); } // 获取总记录数的辅助方法... private static Long getCount(Session session, String hql, Map&lt;String, Object&gt; params) { // ... } } ``` ...

    Hibernate-HQL-查询-Query资料

    - 使用WHERE子句指定查询条件,支持比较操作符(=、&lt;、&gt;、&lt;=、&gt;=、!=)、逻辑操作符(AND、OR、NOT)以及IN、BETWEEN、LIKE等。 5. **函数与运算符** - 支持数学函数(如SUM、AVG、COUNT、MAX、MIN)和字符串函数...

    odl 数据库设计PPT (ooa ->ER)

    - **会话和查询(Sessions and Queries)**: 使用SessionFactory创建Session,执行CRUD操作和HQL(Hibernate Query Language)查询。 5. **ODL数据库设计案例**: - **网络拓扑(Topology)**: 设计表示网络设备...

    Hibernate3.6(开发必看).pdf

    &lt;property name="connection.url"&gt;jdbc:mysql://localhost:3306/mydb&lt;/property&gt; &lt;property name="connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; &lt;property name="connection.username"&gt;user&lt;/...

    Hibernate Tools使用指南

    &lt;artifactId&gt;hibernate-tools&lt;/artifactId&gt; &lt;version&gt;5.4.32.Final&lt;/version&gt; &lt;/dependency&gt; ``` 对于Gradle用户,可以在`build.gradle`文件中加入: ```groovy dependencies { compile 'org.hibernate:...

    Hibernate数据检索(HQL)笔记

    String hql = "FROM Person WHERE age &lt; :ageParam"; Query query = session.createQuery(hql); query.setParameter("ageParam", 25); List&lt;Person&gt; all = query.list(); for (Person per : all) { System.out...

    23、Doctrine QueryBuilder对象介绍1

    DQL是专门为Doctrine设计的一种查询语言,类似于Hibernate的HQL和Java Persistence API(JPA)的JPQL。与SQL不同,DQL处理的对象是实体(Entities),而不是表。在DQL中,我们可以用Model类的全名代替表名,并使用...

    Hadoop-2.8.0-Day08-Hive函数与HQL详解-课件与资料.zip

    Hadoop是一个开源框架,主要用于分布式存储和计算大规模数据集,而Hive则是建立在Hadoop之上的一种数据仓库工具,它提供了一种SQL-like的语言(称为HiveQL或HQL)来方便数据查询和分析。在这个"Day08-Hive函数与HQL...

Global site tag (gtag.js) - Google Analytics