Tag: hibernate

在Spring Data JPA存储库中使用@Primary

如果有人需要在Spring Data存储库上使用@Primary:看起来Spring Data JPA会忽略存储库上的@Primary注释。 作为一种解决方法,我创建了BeanFactoryPostProcessor ,它检查给定的存储库是否有@Primary注释并将该bean设置为主要。 这是代码: @Component public class SpringDataPrimaryPostProcessor implements BeanFactoryPostProcessor { public static final String REPOSITORY_INTERFACE_PROPERTY = “repositoryInterface”; @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { makeRepositoriesPrimary(getRepositoryBeans(beanFactory)); } protected List getRepositoryBeans(ConfigurableListableBeanFactory beanFactory) { List springDataRepositoryDefinitions = Lists.newArrayList(); for (String beanName : beanFactory.getBeanDefinitionNames()) { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName); String beanClassName = beanDefinition.getBeanClassName(); try […]

如何构建一个动态查询,该查询添加了迄今为止的天数,并使用条件API将该日期与另一个日期进行比较?

我有一张A桌和一张B桌。 JPA entity ,A和B类都有joda.time.datetime Persistent Field分别表示retentionDate和lastmodifiedDate 。 A还有一个类型为int Persistent Field 。 现在我想将add number of a.days到a.retentionDate ,然后使用JPA criteria API将其与b.lastmodifiedDate进行比较。 实体类 @Entity @Table(name = “A”) @Data @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @EqualsAndHashCode(of = “id”, callSuper = false) public class A extends AbstractBaseEntity { @Id @GeneratedValue(generator = “uuid”) @GenericGenerator(name = “uuid”, strategy = “uuid2”) @Column(unique = true, length = […]

与hibernate注释的接口

我想知道我将如何能够注释一个界面 @Entity @Table(name = “FOLDER_TABLE”) public class Folder implements Serializable, Hierarchy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “folder_id”, updatable = false, nullable = false) private int fId; @Column(name = “folder_name”) private String folderName; @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = “FOLDER_JOIN_FILE_INFORMATION_TABLE”, joinColumns = { @JoinColumn(name = “folder_id”) }, inverseJoinColumns = { @JoinColumn(name = “file_information_id”) }) private […]

加入fetch:“查询指定的连接提取,但获取的关联的所有者在选择列表中不存在”

我有以下代码: public class ValueDAO implements BusinessObject { private Long id; private String code; private ClassDAO classDAO ; …. } public List getCodesByCodeClass(Long classId) { String select = “select distinct val.code from ValueDAO val left ” + “join fetch val.classDAO “; String where = “where val.classDAO.id = ? order by val.code”; return getHibernateTemplate().find(select + where, classId); […]

限制JPA中集合的大小

说我有这样的实体 @Entity Class A{ //fields @Onetomany Set b; // } 现在,我如何限制集合中’B’的数量,使得当集合中有新条目时,最旧的条目被删除,有些像我们在LinkedHashMap中有的removeEldestEntry 。 我正在使用带有Hibernate的MySQL 5.5 DB。 提前致谢。 编辑 我的目标是在任何时间点都不要在该表中包含超过N个条目。 我的一个解决方案是使用Set并安排作业来删除旧条目。 但我发现它很脏。 我正在寻找一个更清洁的解决方案。

忽略In-Criterion

我想用一个带有Hibernate Criteria API的In-Criterion来选择不区分大小写的项目。 例如 Criteria crit = session.createCriteria(Item.class); crit.add(Restrictions.in(“prop”, valueList).ignoreCase()); 不幸的是,Criterion类没有ignoreCase方法。 HQL不是替代品。

在运行时将Hibernate实体绑定到表

我有一个数据库模式,包含多个具有不同名称的表,但都具有完全相同的列结构。 该数据库包含每天一个表的历史日志数据。 我真的希望能够为我可以为每个表重用的列创建一个Hibernate映射。 基本上我需要一种方法来传递表名,无论是在创建会话时还是在执行查询时。 我不认为Hibernate支持这一点,但我很想知道是否有人知道如何处理这种情况。

使用JPA保持Map

什么是在类中持久保存以下地图的最佳方法: @Entity class MyClass { @ManyToMany(cascade = CascadeType.ALL) Map myMap = new HashMap(); } 我试过这个,但代码导致: 引起:org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany定位未映射的类:mypackage.myClass.myMap [java.lang.Float]

Hibernate将classname.hbm.xml放在哪里

我的朋友谷歌告诉我,我应该将classname.hbm.xml放在classname.java所在的位置。 但它说不起作用 资源:找不到AccountsRequest.hbm.xml AccountsRequest是java类名。 我用javac编译。 不确定是不是这个原因。 AccountsRequest.java位于/ WEB-INF / src /。 编辑 :在hibernate.cfg.xml中我有 资源= “AccountsRequest.hbm.xml”/> hibernate.cfg.xml位于/ WEB-INF /。 谢谢!

如何使用Spring 4.0.6全局设置FlushMode for Hibernate 4.3.5.Final?

我正在尝试使用Hibernate 4.3.5.Final和Spring 4.0.6升级我们的应用程序。 我的应用程序中数据库写入操作的任何位置都会出现如下错误: Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction definition. at org.springframework.orm.hibernate4.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1135) at org.springframework.orm.hibernate4.HibernateTemplate$26.doInHibernate(HibernateTemplate.java:826) at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:340) at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:308) at org.springframework.orm.hibernate4.HibernateTemplate.deleteAll(HibernateTemplate.java:823) … 以下是sessionFactory和transactionManager的spring配置: com/mycompany/Person.hbm.xml org.hibernate.dialect.HSQLDialect 1: 为了全局设置flushMode以便应用程序以与以前相同的方式工作,我需要将flushMode设置为全局,因此我不想使用@Transactional(readOnly = false)方法。 2: 在下面的post中,有人建议将singleSession设置为false, Java / Hibernate – 在只读模式下不允许写入操作 Spring文档建议指定“singleSession”=“false”有副作用: http […]