我正在使用hibernate映射来自mysql数据库的数据。
以下是我的查询:
long id = (Long) session.createQuery("Select category.id from Project as p where p.id =:projectId").setLong("projectId", projectId).uniqueResult();
activities = session.createQuery("Select name from Activity as a where a.parent.id =:activityId").setLong("activityId", id).list();
@Entity
public class Activity implements BaseEntry, Comparable<Activity> {
private static final long serialVersionUID = 4937176332500551910L;
@Id
@GeneratedValue
private long id;
@Column(name = "short", unique = true, nullable = false)
private String key;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Activity parent;
@OneToMany(targetEntity = Activity.class, mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnore
private Collection<Activity> children;
@OneToMany(targetEntity = Project.class, mappedBy = "category", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnore
private Collection<Project> projects;
@Entity
public class Project implements BaseEntry, Comparable<Project> {
private static final long serialVersionUID = 1911160043392595450L;
@Id
@GeneratedValue
private long id;
@Column(name = "short", unique = true, nullable = false)
private String key;
@Column(nullable = false)
private String name;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Activity category;
activities = session.createQuery("Select a.name from Activity as a where a.parent.id = (Select p.category.id from Project as p where p.id =:projectId)")
.setLong("projectId", projectId).list();
并得到一个错误:
Apache Tomcat/7.0.23-错误报告
键入异常报告
org.codehaus.jackson.map.JsonMappingException: could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->se.softwerk.timelog.model.Activity["parent"]->se.softwerk.timelog.model.Activity_$$_javassist_3["id"]) org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218) org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183) org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:122) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:71) org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86) org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610) org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256) org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1604) org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:558) com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.writeTo(JacksonProviderProxy.java:160) com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1437) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.hibernate.LazyInitializationException: could not initialize proxy - no Session org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:149) org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:195) org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185) se.softwerk.timelog.model.Activity$$_javassist_3.getId(Activity_$$_javassist_3.java) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483) org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:122) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:71) org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86) org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610) org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256) org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1604) org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:558) com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.writeTo(JacksonProviderProxy.java:160) com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
注意可获得根本原因的完整堆栈跟踪
合并这些查询的最简单方法是使用一个子查询:
Select a.name from Activity as a where a.parent.id =
(Select p.category.id from Project as p where p.id =:projectId)
问题内容: 我要么变老,要么我需要写的查询变得越来越复杂。以下查询将获取与该用户的所有关联。 该表为(,,,); 现在,我还需要通过 独立查询如下所示: 但是,是否可以将这两个查询合并为一个查询?我的逻辑认为应该这样,尽管我不知道如何进行实际的JOIN。 问题答案: 我可能会使用UNION。
问题内容: 结合这两个查询的正确语法是什么? 和 我试过了: 但我收到“ UNION和ORDER BY的用法不正确”。 编辑 此外,我希望结果在一行中返回。这样我就可以访问php中的值,例如 根据西蒙的建议,我不应该使用UNION,因为我想返回一行数据 问题答案: 您不能先进入,然后再进入。 编辑 但是你可以 将ORDER BY或LIMIT应用于单个SELECT,将子句放在包围SELECT的括号内
问题内容: 我想将两个选择查询与结合在一起。 如何使用第二个中的第一个结果? 问题答案: 使用 CTE 可以在多个查询中重用子查询的结果。 为此,您需要PostgreSQL 8.4+: 您最有可能想要而不是。不排除重复项,这样可以更快。
问题内容: 由于ORFirestore中没有逻辑运算符,因此我尝试在本地合并2个单独的查询。 现在,我想知道如何保持结果的正确顺序。当我独立运行2个查询时,我无法明确地查询结果(至少不是我使用该orderBy方法从Firestore获取结果的顺序)。 我的想法是将第二个查询放在第一个查询的内部。这是一个坏主意的表现明智的选择吗? 问题答案: 要在本地合并2个单独的查询,建议您使用方法。您可以使用以
大家好,我在使用jparepository使用@query连接两个表时遇到了一个小问题,但我得到了错误。请帮我做这个。
问题内容: 我有两张这样的地图: 我想做的就是将两个地图合并成 这样: 如果不在中,则将条目添加到中。 如果不在,则相同,将条目添加到中。 如果在中,则添加此条目: 我已经阅读了有关,但是我确实很难使用它。任何线索如何做到这一点? 谢谢!! 问题答案: 我认为这是可行的 合并功能将解决方案3,因为如果密钥已经存在,它将使用v1.mark1和v2.mark2创建一个新的MyObject。