java中的两个项目、两个POJO和同一个数据库

java中的两个项目、两个POJO和同一个数据库,java,hibernate,Java,Hibernate,我有两个项目,一个是webapplication,另一个是独立应用程序。 两者都在同一个数据库上使用hibernate。 我的问题是 我无法妥善保管它,但我仍在努力。 我只想从project1访问project2中的方法。所以我在project1中使用p2.jar创建了jar和iam。在p1中创建了会话并调用了p2,但是那里可用的POJO是相同的,我仍然在java中获得了强制转换异常 例如:在P1中,iam调用P2的m1 在P1方法中,逻辑如下 创建会话 session.beginTransac

我有两个项目,一个是webapplication,另一个是独立应用程序。 两者都在同一个数据库上使用hibernate。 我的问题是

我无法妥善保管它,但我仍在努力。 我只想从project1访问project2中的方法。所以我在project1中使用p2.jar创建了jar和iam。在p1中创建了会话并调用了p2,但是那里可用的POJO是相同的,我仍然在java中获得了强制转换异常

例如:在P1中,iam调用P2的m1

在P1方法中,逻辑如下

创建会话

session.beginTransaction();
Query preChkQuery=session.createQuery("from X x ");

orcId=((X)orList.get(0)).getId();

//invoking p2 method

P2class p2class = new P2class ();
p2class.execute(orcId)

And in method execute
session.beginTransaction();
Query preChkQuery=session.createQuery("from X x ");
we=((X)orList.get(0)).getId();
return we;

当调用进入p2方法并开始执行时,问题就从这里开始了。它给出了类强制转换异常

我相信这个设计有一个基本缺陷。如果我理解正确的话,您将p2.jar打包到p1中。这意味着所有的类在p1 war中随时可用。我不确定您是否在运行p1时在p1的部署程序集中添加了p2.jar

我有一个类似的设置,如下所示:

包含所有Hibernate模型和SessionFactory配置的common.jar。它是MVC应用程序,所以我在common.jar中也有DAO层

我在战争中使用了ServiceImpl,我调用了DAO.method来操作实体,它工作得很好


您能检查一下您的部署程序集吗?

如果我理解正确,您有两个相同的POJO,一个在P1,另一个在P2,对吗?如果我是对的,这应该避免,因为它可能会产生一些类加载问题,比如您遇到的类强制转换异常是,类在p2.jar中使用不同的包加载,在p1项目中使用不同的包加载。当我在hibernate.cfg.xml中保留两个具有不同包的pojo时,会出现异常。因此在hibernate.cfg.xml中只配置了一个pojo。但是当调用发生时,它开始加载位于p2.jar中的hibernate.cfg.xml。是的,但是common.jar只是一个hibernate应用程序。包含所有类POJO、DAO、Service、hibernate配置文件。也就是说,使用主类可以很好地工作。但是当在P1项目中将其用作jar文件时,会出现类强制转换异常……更详细地说,我观察到会话包含相同的POJO,即使在访问p2.jar类时也是如此。正如dharam在部署时所说,我在web应用程序和jar文件中都有hibernate.cfg.xml文件,但是只有在使用p2.jar DAO时才会使用cfg文件。P1项目中的Pojo类与P2.jar中的Pojo类相同请用简单的话帮助我解决很多困难无法使用Webapplication Pojo访问独立类Pojo为什么要P1中的Pojo???这是错误的,如果两个域类相同,那么您可以使用p2.jar重用p2.jar中的类,实际上是使用p2.jar作为为某些其他功能开发的代码重用,进行了大量的开发,对于新的需求,我们需要使用这个jar。但是正如我已经告知的那样,p2.jar是一个独立的应用程序,对于特定的需求,它工作得很好。为了满足相同的需求,我需要重用exixting代码,这意味着只需调用相同的类就可以完成工作。感谢您的快速和定期的帮助回复。希望你能帮我解决这个问题。现在我已经从p1项目中删除了所有pojo,并将其保存在p2.jar中,并且工作正常。。谢谢你的建议