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;
}
//略
}
分享到:
相关推荐
<servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 自定义servlet.xml配置文件的位置和名称 --> <init-param> <param-name>...
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` ### 整合Spring与Hibernate #### Hibernate配置文件 **表格8**: hibernate.cfg.xml(自动生成) ```xml <!DOCTYPE ...
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- 映射文件位置 --> <mapping resource="com/example/entity/User.hbm.xml"/> </session-factory> </hibernate-...
它的主要特性包括:对象-关系映射、查询语言(HQL)、事务处理、缓存策略等。掌握NHibernate,有助于开发者实现数据层的高效管理和可扩展性。 书中提供的代码部分,很可能是示例应用或者配套练习,涵盖了Spring.NET...
<param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-...
NHibernate支持多种数据库,具备强大的查询能力,包括HQL(Hibernate查询语言)和 Criteria 查询,以及Linq-to-NHibernate。 本书的"代码部分"包含了一系列示例和项目,旨在帮助读者通过实践掌握Spring.NET和...
"瀚强HQL75D-2SA 480电源原理图.pdf" 该资源是一个电源原理图,名称为HQL75D-2SA,输出电压为480V。下面是该原理图的详细知识点: 1. 电源架构:该电源原理图采用了双向变换器架构,输出电压为480V,适用于工业级...
<property name="connection.url">jdbc:mysql://localhost:3306/mydatabase</property> <!-- 数据库连接 URL --> <property name="connection.username">root</property> <!-- 数据库用户名 --> <property name=...
<property name="connection.url">jdbc:mysql://localhost:3306/test</property> <!-- 数据库用户名 --> <property name="connection.username">root</property> <!-- 数据库密码 --> <property name=...
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="annotatedClasses"> <list> <value>...
return new Page<>(pageNo, pageSize, totalCount, records); } // 获取总记录数的辅助方法... private static Long getCount(Session session, String hql, Map<String, Object> params) { // ... } } ``` ...
- 使用WHERE子句指定查询条件,支持比较操作符(=、<、>、<=、>=、!=)、逻辑操作符(AND、OR、NOT)以及IN、BETWEEN、LIKE等。 5. **函数与运算符** - 支持数学函数(如SUM、AVG、COUNT、MAX、MIN)和字符串函数...
- **会话和查询(Sessions and Queries)**: 使用SessionFactory创建Session,执行CRUD操作和HQL(Hibernate Query Language)查询。 5. **ODL数据库设计案例**: - **网络拓扑(Topology)**: 设计表示网络设备...
<property name="connection.url">jdbc:mysql://localhost:3306/mydb</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.username">user</...
<artifactId>hibernate-tools</artifactId> <version>5.4.32.Final</version> </dependency> ``` 对于Gradle用户,可以在`build.gradle`文件中加入: ```groovy dependencies { compile 'org.hibernate:...
String hql = "FROM Person WHERE age < :ageParam"; Query query = session.createQuery(hql); query.setParameter("ageParam", 25); List<Person> all = query.list(); for (Person per : all) { System.out...
DQL是专门为Doctrine设计的一种查询语言,类似于Hibernate的HQL和Java Persistence API(JPA)的JPQL。与SQL不同,DQL处理的对象是实体(Entities),而不是表。在DQL中,我们可以用Model类的全名代替表名,并使用...
Hadoop是一个开源框架,主要用于分布式存储和计算大规模数据集,而Hive则是建立在Hadoop之上的一种数据仓库工具,它提供了一种SQL-like的语言(称为HiveQL或HQL)来方便数据查询和分析。在这个"Day08-Hive函数与HQL...