Tag: hibernate

当UserType表示单行中的对象集时。 如何使用类似标准查询Hibernate自定义UserType?

我们使用自定义Hibernate UserType将一组字符串存储在一行中。 当尝试使用类似标准查询此集合时,使用JPA CriteriaBuilder Hibernate会抛出IllegalArgumentException Parameter value String did not match expected type java.util.Set 这有解决方法吗? 这是我们正在使用的UserType: public class SetStringType implements UserType, LiteralType<Set> { final private static String SEPARATOR = “|”; final private static String SEPARATOR_REGEXP = “\\|”; @Override public int[] sqlTypes() { return new int[] { Types.VARCHAR }; } @Override public Object nullSafeGet(ResultSet rs, String[] […]

多对多无效对象名称

我在代码中的Employee-Project之间创建了多对多关系,但是当我想使用它时抛出此exception: com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称’employee_project’。 我试过了,但是我没有成功找到这个exception的根本原因。 所以,请帮帮我。 以下是Employee和Project的POJO以及抛出此exception的代码 员工pojo: @Entity @Table(name = “Employee”) public class Employee { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “EMPLOYEE_ID_PK”) private int employeeIdPk; @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = “workers”) private Collection projects = new HashSet(0); } 项目pojo: @Entity @Table(name = “Project”) public class Project { @Id @GeneratedValue(strategy = […]

与hibernate的父/子关系出现问题

我遇到了父子关系的问题。 Hibernate文档说在子类中添加“多对一”关系以从父级获取外键值。 但是为了使这种关系起作用,我必须在子类中添加Invoice属性,该子属性将父级循环包含在子级中并打破我的序列化程序。 有人可以指出我在哪里做错了吗? 这是我的代码: Invoice.java public class Invoice implements Serializable { private Long id; private Date invDate; private String customer; private Set items; … getters/setters … } InvoiceItem.java public class InvoiceItem implements Serializable { private Long itemId; private long productId; private int quantity; private double price; private Invoice invoice; //??????? … getters/setters … } […]

使用TaskExecutor时数据插入问题

在我的Web服务应用程序中,我实现异步任务执行器以在数据库中插入对象。 但在第一次插入时,它会抛出exception。 org.springframework.orm.hibernate3.HibernateSystemException: A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance: 第二次刷新url时,对象成功插入数据库。 问题在于未插入对象的新请求的第一个实例。 XML文件 我使用了org.springframework.core.task.SimpleAsyncTaskExecutor / org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor以及子表列表是clear() , addall() 。 但没有运气。 如果我对任务执行程序标记进行注释,则会正确插入所有新请求对象。 在我的场景中,我必须实现异步任务执行器。 RptServiceImp.java public class RptServiceImp{ @javax.annotation.Resource private ApplicationEventPublisher applicationEventPublisher; @Transactional public void process(final RqstLoad rqstLoad ) { try { applicationEventPublisher.publishEvent(new LoggingEvt (this)); }catch(Exception e){ System.out.println(“e:: “+e); e.printStackTrace(); } […]

如何处理复合键hibernate

我的hbm.xml文件是这样的: 但我有两个POJO类,分别是“WordhelperWordusage.java”和“WordhelperWordusageId.java”,所以我很困惑,我应该如何处理这些类? 如何实施? 提前致谢! 更新 我确实喜欢这个 wordhelper_wordusage.save(wordhelper); wordhelper_wordusage.save(wordusage); session.save(wordhelper); session.save(wordusage); session.save(wordhelper_wordusage); 但它给我这样的例外: Hibernate: select max(ID) from SOZANA.WORDFORM Hibernate: select max(ID) from SOZANA.WORDHELPER Exception in thread “main” org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): pojopackage.WordhelperWordusage

在hibernate中合并父节点后获取子ID

当父母被合并时,是否有任何干净的方法来获取子对象的id? 即 Parent parent = parentDao.get(parentid); Child child = new Child(); parent.addChild(child); parentDao.merge(parent); child.getId() // is null 我和父母之间有多对一的关系。 另一个问题就是这个问题,唯一有效的解决办法是遍历儿童名单,但这听起来很可怕而且很糟糕。 JPA如何在从父级使用合并但是创建子级时获取生成的id /对象? 当然,必须有一个更好的解决方案。

如何在执行特定查询后更改会话NLS_COMP / SORT

我的问题特定于一些问题场景,其中使用EntityManager从Spring容器启动事务,然后我从EntityManager获取hibernate会话。 整体流程: 在应用程序中, entityManager.createNativeQuery(searchQuery)可以选择一些数据。 我需要从entityManager获取hibernate会话,然后在我想要设置nls_comp / nls_sort的会话中,或者我可以在entityManager本身中执行查询。 例如,alter session set nls_comp=linguistic 。 完成后我想再次禁用这些选项回到之前的状态。 最有可能是通过关闭hibernate会话或某种机制。 这是正确的方法吗? 我是否应该为2 alter命令启动另一个事务(我试过它给了一些例外)。 请告诉我如何实现它以及如何在spring启动的事务中管理hibernate会话,或者我可以使用entityManager本身实现启用/禁用。

使用hibernate只在数据库中保存时间

我使用Hibernate并且只想在数据库中保存时间,因此我将字段声明为Date并使用临时类型时间对其进行注释,但它会引发关于格式的错误。 模型 @Entity @Table(name = “working_policy”) public class OrganizationWorkingPolicy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name= “policy_id”) private long policyId; @NotEmpty @NotNull @Column(name= “day”) private String day; @DateTimeFormat(pattern=”hh:mm:ss” ) @Temporal(TemporalType.TIME) @Column(name = “start_time”) private Date startTime; @DateTimeFormat(pattern=”HH:mm:ss” ) @Temporal(TemporalType.TIME) @Column(name = “end_time”) private Date endTime; // getter and setters } 错误 Servlet.service() for servlet [dispatcher] in […]

从外部jar或外部类路径动态加载的Map实体

我需要映射未在hibernate.cfg.xml中列出的实体,这些类是从arbitraty文件夹动态加载的。 我正在尝试注册一个ClassLoaderService以更改加载行为,如果类在编译时定义并存在于类路径中,则以下代码运行正常,但如果我尝试映射一个以dinamically加载的类,则会得到ClassNotFoundException。 关于同一问题有一些问题,但我没有找到任何有效的解决方案。 URL file = ConsultaBase.class.getProtectionDomain().getCodeSource().getLocation().toURI().resolve(“implementacao/”).resolve(“hibernate.cfg.xml”).toURL(); Configuration configuration = new Configuration() .addAnnotatedClass(Registro.class).configure(file); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder ( new BootstrapServiceRegistryImpl( new ClassLoaderServicePirilampo(Registro.class.getClassLoader()), new LinkedHashSet() ) ) .applySettings(configuration.getProperties()) .addService(ClassLoaderService.class, new ClassLoaderServicePirilampo()) .build(); //this line throws ClassNotFoundException sessionFactory = configuration.buildSessionFactory(serviceRegistry); 我扩展了ClassLoaderServiceImpl以便记录所请求的类,并注意到从JUnit运行,从定义类的项目运行,它工作正常,我从服务获取类加载日志。 但是,如果我添加了以语音方式加载的注释类(来自GroovyClassLoader),则服务永远不会收到对同一类的请求。 最后一行抛出了以下错误: 17:06:49 ERROR [AssertionFailure] HHH000099: an assertion failure occured (this may indicate a bug […]

JPA + SQLite问题

我正在配置JPA以使用SQLite数据库,以hibernate作为提供程序。 我将一个pojo映射到一个表,没有fk,现在只是简单的。 我正在使用我在互联网上找到的SQLDialect。当我尝试初始化我的应用程序时,我得到了这个堆栈跟踪: java.sql.SQLException: SQLite supports only TRANSACTION_SERIALIZABLE at org.sqlite.Conn.setTransactionIsolation(Conn.java:131) at com.mchange.v2.c3p0.impl.NewProxyConnection.setTransactionIsolation(NewProxyConnection.java:701) at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:58) at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:27) at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:127) at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:314) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:730) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) at hr.loggingserver.listeners.ApplicationListener.contextInitialized(ApplicationListener.java:27) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) […]