Hibernate 多租户web应用程序的报告

Hibernate 多租户web应用程序的报告,hibernate,web-applications,reporting,jasper-reports,multi-tenant,Hibernate,Web Applications,Reporting,Jasper Reports,Multi Tenant,我们有一个基于web的多租户企业应用程序,使用Hibernate over MySQL。我们对客户需要的任何报告都使用Jasper报告,但现在我们还需要提供临时报告,以便用户可以运行自己的查询 其他人是如何做到这一点的 我认为我可以: 提供excel或xml格式的完整导出 设置实体水合物的格式,以便将任何@ManyToOne替换为该实体的toString()。这将使得数据对用户来说实际上是有意义的,而不是一大堆外键ID 让他们对数据库副本运行SQL。确保每个表都有一个 租户ID,让他们访问 数据

我们有一个基于web的多租户企业应用程序,使用Hibernate over MySQL。我们对客户需要的任何报告都使用Jasper报告,但现在我们还需要提供临时报告,以便用户可以运行自己的查询

其他人是如何做到这一点的

我认为我可以:

  • 提供excel或xml格式的完整导出 设置实体水合物的格式,以便将任何
    @ManyToOne
    替换为该实体的
    toString()
    。这将使得数据对用户来说实际上是有意义的,而不是一大堆外键ID

  • 让他们对数据库副本运行SQL。确保每个表都有一个 租户ID,让他们访问 数据库副本,但将ID附加到 每一个问题都在幕后。我甚至可以确保这个数据库副本中只有他们的数据。但这有点挫败了整个多租户方法


  • 这些用户查询有多复杂?任意SQL?或者你可以通过使用HQL或Criteria(我真正的意思是你可以让用户在UI中定义某种QBE,但你将是构建实际查询的人)来实现吗?在后一种情况下,过滤器可能也有很大帮助

    除非查询结果总是简单的列表,否则我不会为(1)费心。您可以用XML表示层次结构/关系,但我怀疑您的用户是否会喜欢,因为他们必须处理它。toString()方法几乎肯定会适得其反,因为不同的用户必然对同一对象的不同渲染感兴趣(例如,如果返回链接到Bs的As列表,user1会希望B.toString()的结果与user2的结果不同)


    (2) 如果您真的需要任意SQL查询,则应该可以使用。根据数据库的复杂程度和用户数量,您可以创建视图(每个用户)而不是实际的数据库副本

    这些用户查询有多复杂?任意SQL?或者你可以通过使用HQL或Criteria(我真正的意思是你可以让用户在UI中定义某种QBE,但你将是构建实际查询的人)来实现吗?在后一种情况下,过滤器可能也有很大帮助

    除非查询结果总是简单的列表,否则我不会为(1)费心。您可以用XML表示层次结构/关系,但我怀疑您的用户是否会喜欢,因为他们必须处理它。toString()方法几乎肯定会适得其反,因为不同的用户必然对同一对象的不同渲染感兴趣(例如,如果返回链接到Bs的As列表,user1会希望B.toString()的结果与user2的结果不同)


    (2) 如果您真的需要任意SQL查询,则应该可以使用。根据数据库的复杂程度和用户数量,您可以创建视图(每个用户)而不是实际的数据库副本

    我也有同样的问题,我正在(艰难地)考虑实现一个“隐藏”多租户的自定义ODBC驱动程序。签出Data Direct OpenSDK ODBC


    我也有同样的问题,我正在(艰难地)考虑实现一个自定义ODBC驱动程序来“隐藏”多租户。签出Data Direct OpenSDK ODBC