我有两个实体User和Group:
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String email;
@ManyToMany
@JoinTable(name="user_group", joinColumns={@JoinColumn(name="USERNAME")}, inverseJoinColumns={@JoinColumn(name="ID")})
private List<Group> group;
// getters and setters...
}
@Entity
public class Group implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
// getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
它是ManyToMany的单向.它产生表格user和user_group.现在我有简单的查询:
Query q = em.createQuery("select g from Group g");
List<Group> usersGroup = q.getResultList();
Run Code Online (Sandbox Code Playgroud)
抛出异常:
Exception [EclipseLink-4002] …Run Code Online (Sandbox Code Playgroud) 我设法(正如你在我的旧帖子中看到的那样)通过休眠插入了一个 onetomany 关系。我的两个实体类如下所示:
项目.java:
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy="project")
@OrderColumn(name = "project_index")
List<Application> applications;
....
Run Code Online (Sandbox Code Playgroud)
Application.java(项目的子项目。一个项目可以有多个应用程序,但一个应用程序只属于一个项目)
@Entity
public class Application {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "project_id")
private Project project;
...
Run Code Online (Sandbox Code Playgroud)
到目前为止,插入数据效果很好。但是从我的数据库中获取数据是问题所在。我尝试了两种方法:
方式 1:我检索一个项目并尝试从列表属性中获取应用程序。但不幸的是,应用程序实体位于“存储快照”中,这对我来说似乎很错误。这是我的调试屏幕的屏幕截图:

其实这种方法有效!我在其他地方犯了一些错误......
方式2:我尝试通过sql查询检索所有应用程序的列表:
public List<Application> getApplications(int project_id) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Application> applications = session.createQuery("from Application a where a.project_id=" + project_id + " ").list();
return applications;
} …Run Code Online (Sandbox Code Playgroud) 当达到我的tomcat(6.0.20)maxThreads限制时,我得到预期的错误:
为地址为null和端口80的连接器创建的最大线程数(XXX)
然后请求开始挂起队列并最终超时.到现在为止还挺好.问题是当负载下降时,服务器无法恢复并且永远处于瘫痪状态,而不是恢复生机.
任何提示?
如果我有一个包含数百个String字段和对象对象的复杂对象.有些正在实现Serializable,有些则不是.
j2ee服务器如何在会话中序列化该数据.我是否希望返回所有数据.甚至是物体的物体.
Session.setAttribute(数据)
例如Session.getAttribute()== data.getData().getData().getData().getData1()
从getData1()返回的对象是否正确返回?
(我正在使用Tomcat 6和Websphere 6+)
您好我正在尝试执行这个简单的HQL查询,以使用以下方法从我的数据库中获取文件列表:
private static final String SQL_GET_FILE_LIST = "select filename, size, id, type from fileobject";
@Override
public List<FileObject> getFileList(String type) {
// TODO Auto-generated method stub
List<FileObject> files = hbTemplate.find(SQL_GET_FILE_LIST);
hbTemplate.flush();
return files;
}
Run Code Online (Sandbox Code Playgroud)
但我一直得到这个例外:
org.hibernate.hql.ast.QuerySyntaxException: fileobject is not mapped [select filename, size, id, type from fileobject]
org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:257)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:923)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:921)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:913)
com.kc.models.DbFileHelper.getFileList(DbFileHelper.java:65)
com.kc.models.FileHelper.getFileList(FileHelper.java:108)
com.kc.Controllers.AppListController.getFileList(AppListController.java:63)
com.kc.Controllers.AppListController.handleRequest(AppListController.java:34)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) …Run Code Online (Sandbox Code Playgroud) 我正在使用 Maven Ant Tasks 支持进行开发。当要求存储库下载所需的库时,它还会下载每个库的 javadoc 和源代码。有没有办法只下载库 jars?
实际的 build.xml:
<artifact:dependencies settingsFile="${maven.settingsFile}" pomRefId="projectPom"
filesetId="dependency.fileset"
sourcesFilesetId="sources.dependency.fileset"
javadocFilesetId="javadoc.dependency.fileset"
versionsId="dependency.versions">
<remoteRepository refid="remote.repository" />
</artifact:dependencies>
Run Code Online (Sandbox Code Playgroud) 我正在使用Java发布一个论坛发布Web应用程序,我想知道:
<script>标记一样发布时应该解析和删除的xml标记是什么?我是一个新手,我想部署一个Spring项目,我通过SVN到我的Tomcat应用服务器.我在Eclipse(Subclipse)中进行了结账,因此项目位于我的工作区中.
我下载了6.0.29 Tomcat服务器并将其解压缩到一个目录中.然后我在Eclipse的Server选项卡中创建一个新的Tomcat服务器.我可以启动它,我在hrttp:// localhost:8080 /看到Tomcat启动页面
但是我如何部署Spring应用程序,以便它将在我的Tomcat服务器中运行?
以下是我的IDE和服务器设置的屏幕截图:
http://img828.imageshack.us/img828/8711/screenshotku.png
非常感谢您的帮助和最诚挚的问候.
在应用程序重新部署时在struts2 webapp中使用Hibernate,在重新部署后尝试访问页面时会出现此错误.
java.lang.IllegalStateException: Timer already cancelled.
Run Code Online (Sandbox Code Playgroud)
在重新部署tomcat之后,以下输出指示问题的原因是当webapp的第一个实例关闭时,Hibernate没有正常关闭.
Oct 15, 2010 8:58:34 PM org.apache.catalina.loader.WebappClassLoader clearReferencesStopTimerThread
SEVERE: A web application appears to have started a TimerThread named [Timer-0] via the java.util.Timer API but has failed to stop it. To prevent a memory leak, the timer (and hence the associated thread) has been forcibly cancelled.
Run Code Online (Sandbox Code Playgroud)
我已经在contextDestroyed方法中添加了一个ContextListener,但是这没有任何效果.
@Override
public void contextDestroyed(ServletContextEvent arg0) {
HibernateUtil.getSessionFactory().close();
}
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来防止这个错误吗?