小编Dat*_*eus的帖子

具有Criteria限制的Hibernate搜索返回不正确的计数

结果列表很完美,但getResultSize()不正确.

我已经敲了一些代码来说明.

Criteria criteria2 = this.getSession().createCriteria(Film.class);                      

Criterion genre = Restrictions.eq("genreAlias.genreName", details.getSearch().getGenreName());
criteria2.createAlias("genres", "genreAlias", CriteriaSpecification.INNER_JOIN);
criteria2.add(genre);    

criteria2.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStartResult());

FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.createFullTextEntityManager(entityManager);

org.apache.lucene.queryParser.QueryParser parser2 = new QueryParser("title", new StopAnalyzer() );

org.apache.lucene.search.Query luceneQuery2 = parser2.parse( "title:"+details.getSearch()");

FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery( luceneQuery2, Film.class);
fullTextQuery.setCriteriaQuery(criteria2);

fullTextQuery.getResultList()); // Returns the correctly filtered list
fullTextQuery.getResultSize()); // Returns the retsult size without the genre resrtiction
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-search

4
推荐指数
1
解决办法
3177
查看次数

Hibernate二级缓存:是否可以使用它?

我已经看到它写了Hibernate二级缓存仅在调用load方法时使用.我无法找到关于它是否在调用时使用的任何结论性答案get,我们已经集成的GenericDAO项目主要使用.

是否在调用时使用了二级缓存org.hibernate.Session.get(Class clazz, Serializable id)

java hibernate ehcache second-level-cache

4
推荐指数
1
解决办法
993
查看次数

使用JPA Annotations和Map <String,String>和varchar长度

我有一个包含以下成员属性的实体:

@Id
protected String id;

@ElementCollection(targetClass = String.class)
@MapKeyClass(String.class)      
protected Map<String, String> data = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

这映射到两个表,一个ENTITY表和一个ENTITY_DATA表,其中包含HashMap中每个元素的行.它将HashMap中的值映射为VARCHAR(256),我需要它为VARCHAR(1024).可以这样做吗?我无法在ElementCollection或MapKeyClass注释中找到允许这样做的任何内容.

java hibernate jpa

3
推荐指数
1
解决办法
1799
查看次数

org.hibernate.AssertionFailure:未启用getGeneratedKeys()支持(使用Oracle11g)

我在桌子上做了一个"简单",它给出了这个错误.搜索网络没有帮助.

我认为它使用序列作为我的主键的源来连接到我.

你能帮忙吗?谢谢

代码我正在尝试运行(我突出显示了抛出错误的部分)

    EventInstance eventInstance = (EventInstance) sessionFactory.getCurrentSession().get(EventInstance.class, userEventRegistration.getEventInstance().getInstanceId());
    Student student = (Student) sessionFactory.getCurrentSession().get(Student.class, userEventRegistration.getStudent().getStudentId());
    EventRegistration eventRegistration = new EventRegistration();

    if (student == null) {
        student = new Student();
        student.setStudentId(userEventRegistration.getStudent().getStudentId());
    }

    student.setFamilyName(userEventRegistration.getStudent().getFamilyName());
    student.setGivenName(userEventRegistration.getStudent().getGivenName());
    student.setGender(userEventRegistration.getStudent().getGender());
    student.setEmail(userEventRegistration.getStudent().getEmail());
    student.setHomeCountry(userEventRegistration.getStudent().getHomeCountry());
    student.setCourse(userEventRegistration.getStudent().getCourse());
    student.setAccomodationName(userEventRegistration.getStudent().getAccomodationName());
    student.setAddress(userEventRegistration.getStudent().getAddress());
    student.setAddressCity(userEventRegistration.getStudent().getAddressCity());
    student.setContactPhone(userEventRegistration.getStudent().getContactPhone());
    student.setContactDetailsStatus(userEventRegistration.getStudent().getContactDetailsStatus());
    student.setContactDetailsDate(userEventRegistration.getStudent().getContactDetailsDate());
    student.setScholarships(userEventRegistration.getStudent().getScholarships());
    student.setDietaryRestrictions(userEventRegistration.getStudent().getDietaryRestrictions());
    student.setStudentComments(userEventRegistration.getStudent().getStudentComments());
    student.setInternalComments(userEventRegistration.getStudent().getInternalComments());

    eventRegistration.setEventInstance(eventInstance);
    eventRegistration.setStudent(student);
    eventRegistration.setAttended(userEventRegistration.getAttended());
    eventRegistration.setSubmitDateTime(new Date());
    eventRegistration.setAdditionalInfo(userEventRegistration.getAdditionalInfo());
    eventRegistration.setNumberAttending(userEventRegistration.getNumberAttending());
    eventRegistration.setArchiveDate(userEventRegistration.getArchiveDate());

    **sessionFactory.getCurrentSession().save(eventRegistration);**

    sessionFactory.getCurrentSession().getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)

hibernate映射

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.myapps.issu.models.database.Event" table="events">
        <id name="eventId" column="event_id" type="integer" />

        <property name="eventName" …
Run Code Online (Sandbox Code Playgroud)

hibernate

3
推荐指数
1
解决办法
2304
查看次数

Spring + Hibernate应用程序中的问题:org.hibernate.HibernateException:找不到当前线程的Session

我正在研究如何将Spring Framework与Hibernate集成以创建我的DAO对象

我在从CRUD操作集执行读取操作时遇到一些问题.

我有这个实现我的DAO对象的类:

package org.andrea.myexample.HibernateOnSpring.dao;

import org.andrea.myexample.HibernateOnSpring.entity.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;

public class PersonDAOImpl implements PersonDAO{

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}

// Metodo che inserisce un nuovo record nella tabella person
@Transactional(readOnly=false)
public void addPerson(Person p) {
    Session session = sessionFactory.openSession();
    session.save(p);
    session.close();        
}

/* Metodo che recupera un record, rappresentante uno studente, avente uno 
 * specifico id dalla tabella.
 * 
 * @param L'id dello studente
 * @see org.andrea.myexample.myJdbcSpringExample.StudentDAO#getStudent(java.lang.Integer)
 */ …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc

3
推荐指数
1
解决办法
6430
查看次数

Hibernate - 懒得初始化 - 没有关闭会话或会话

我发现我的hibernate程序很奇怪.这是我的代码

public Set<AnotherClass> getAnotherClassSetsFromSomeClass() {
        Session session = HIbernateUtil.getSessionFactory().openSession();
        Transaction trans = session.beginTransaction();
        SomeClass sc = (SomeClass)session.get(SomeClass.class,"classId");
        trans.commit();
        session.close;
        return sc.getAnotherClassSet();
    }
Run Code Online (Sandbox Code Playgroud)

如果我在Java控制台上运行它,这段代码看起来很好.

如果我使用它一个Web应用程序(JSF),我收到此错误

懒得初始化 - 没有会话或会话被关闭

它具有一对多关系(一个SomeClass有许多AnotherClass)

异常消息指向返回sc.getAnotherClassSet()为空指针.我确信我的数据库中有这些数据.

好吧,我发现,如果我添加System.out.println(sc.getAnotherClassSet())berfore return sc.getAnotherClassSet()我的代码工作正常.

知道发生了什么事吗?谢谢.

jsf hibernate lazy-loading

3
推荐指数
1
解决办法
1万
查看次数

我正确配置Hibernate hibernate.cfg.xml文件吗?

我是第一次在项目中使用Hibernate(4.2.3).我试图让它连接到H2嵌入式(本地)数据库,并拥有h2-1.3.173.jar类路径以及所有Hibernate JAR.我在日志输出中收到来自Hibernate的一些令人不安的错误消息,这让我想知道我是不是正确配置了Hibernate.这是我在日志中看到的输出:

604 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
707 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.2.3.Final}
769 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
771 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000043: Configuring from resource: hibernate.cfg.xml
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000040: Configuration resource: hibernate.cfg.xml
2835 [main] INFO org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in …
Run Code Online (Sandbox Code Playgroud)

java configuration hibernate hibernate.cfg.xml

3
推荐指数
1
解决办法
2万
查看次数

用spring配置hibernate

我正在尝试将spring与hibernate集成,但是捕获NamingException:Context是只读的

堆栈跟踪

WARNING: Could not bind factory to JNDI
javax.naming.NamingException: Context is read only
    at org.apache.naming.NamingContext.checkWritable(NamingContext.java:903)
    at org.apache.naming.NamingContext.createSubcontext(NamingContext.java:517)
    at org.apache.naming.NamingContext.createSubcontext(NamingContext.java:538)
    at org.apache.naming.SelectorContext.createSubcontext(SelectorContext.java:422)
    at javax.naming.InitialContext.createSubcontext(InitialContext.java:464)
    at org.hibernate.util.NamingHelper.bind(NamingHelper.java:69)
    at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:855)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:774)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:540)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate

2
推荐指数
1
解决办法
1093
查看次数

用户缺少使用JUnit找不到的权限或对象

我使用JUnit时遇到问题:

Hibernate: SELECT COUNT(0) FROM group
DEBUG - SqlExceptionHelper         - user lacks privilege or object not found: GROUP [n/a]
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: GROUP
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy46.executeQuery(Unknown Source)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:441)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)
at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:486)
at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForInt(SimpleJdbcTemplate.java:117)
at org.springframework.test.jdbc.SimpleJdbcTestUtils.countRowsInTable(SimpleJdbcTestUtils.java:56)
at org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests.countRowsInTable(AbstractTransactionalJUnit4SpringContextTests.java:115)
at fr.neosoft.neocommunity.dao.group.GroupTest.testSave(GroupTest.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native …
Run Code Online (Sandbox Code Playgroud)

junit hibernate

2
推荐指数
1
解决办法
6880
查看次数

如何编辑jdoconfig.xml和persistence.xml,以便JPA保存到appengine数据存储区

使用Google Eclipse插件,我的项目自动在META-INF文件夹中附带两个文件:jdoconfig.xmlpersistence.xml.根据https://developers.google.com/appengine/docs/java/datastore/jpa/overview上的说明,我的持久性文件应该包含以下jpa数据存储存储行:

<provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
Run Code Online (Sandbox Code Playgroud)

但是当我打开我发现的持久性文件时

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="transactions-optional">
        <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
        <properties>
            <property name="datanucleus.NontransactionalRead" value="true"/>
            <property name="datanucleus.NontransactionalWrite" value="true"/>
            <property name="datanucleus.ConnectionURL" value="appengine"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

jdoconfig.xml文件是

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">

   <persistence-manager-factory name="transactions-optional">
       <property name="javax.jdo.PersistenceManagerFactoryClass"
           value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
       <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
       <property name="javax.jdo.option.NontransactionalRead" value="true"/>
       <property name="javax.jdo.option.NontransactionalWrite" value="true"/>
       <property name="javax.jdo.option.RetainValues" value="true"/>
       <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
   </persistence-manager-factory>
</jdoconfig>
Run Code Online (Sandbox Code Playgroud)

使用这些默认内容,JPA尚未保存到我的数据存储区.所以我编辑persistence.xml文件看起来像这样

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" …
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-eclipse-plugin jpa-2.0

2
推荐指数
1
解决办法
3121
查看次数