Tag: dao

如何在具有枚举字段的实体上使用JPA CriteriaQuery填充DTO类字符串字段?

我正在使用JPA Criteria API,在我的查询多选中我想要检索枚举属性,而不是枚举本身。 这是我的查询: final CriteriaQuery query = builder.createQuery(MyClassDTO.class); 在MyClassDTO我有4个字段如下: private String icon; private String provenance; private int sizeX; private int sizeY; 我从中检索数据的路径是: final Root from = query.from(MyClass.class); MyClass有3个字段: @Column @Enumerated(EnumType.STRING) private EnumTileIcon enumTileIcon; @Column @Enumerated(EnumType.STRING) private EnumProvenance enumProvenance; @Column @Enumerated(EnumType.STRING) private EnumSize enumSize; 我想要做的是使用query.multiselect填充query.multiselect ,如下所示: query.multiselect( from.get(MyClass_.enumTileIcon.toString()), from.get(MyClass_.enumProvenance.name()), from.get(MyClass_.enumSize.getWidth()), from.get(MyClass_.enumSize.getHeight()) ); 我怎么解决这个问题?

DAO和dependency injection,建议?

这是我第一次使用DAO模式。 从我到目前为止所读到的 ,实现这种模式将帮助我从任何持久性实现中分离我的调用代码(控制器) – 正是我想要的; 也就是说,我不想被重新使用任何特定的数据库或第三方库。 我正在使用MongoDB和morphia(作为示例)创建一些测试代码(以TDD方式),并使用morphia提供的BasicDAO类。 据我所知,扩展BasicDAO需要一个接受Morphia和Mongo对象的构造函数; 这些是非常具体的(第三方)类型,我真的不想在DAO类本身之外浮动。 我怎样才能拥有更多可插拔架构? 我的意思是,我应该考虑如何配置我的应用程序以使用具有特定配置参数的特定DAO,在实际源外部?

在Room中创建Generic DAO接口时,“参数的类型必须是使用@Entity注释的类”

我正在使用Room架构组件来实现持久性。 我已经创建了通用DAO接口以避免样板代码。 Room Pro Tips 但是我的代码没有编译说错误:(21,19)错误:参数的类型必须是用@Entity或它的集合/数组注释的类。“ 对于通用类T. interface BaseDao { @Insert(onConflict = OnConflictStrategy.REPLACE) void insert(T… entity); @Update void update(T entity); @Delete void delete(T entity); } @Dao public abstract class ReasonDao implements BaseDao { @Query(“SELECT * from Reason”) abstract public List getReasons(); } 这里有什么我想念的吗? 它就像这样工作

如何使用Hibernate Context会话创建Generic DAO类

我正在尝试使用Hibernates Context Sessions实现Generic DAO。 以下是我的镜头:| import java.io.Serializable; public interface GenericDao { /** Persist the newInstance object into database */ ID create(T newInstance); /** * Retrieve an object that was previously persisted to the database using * the indicated id as primary key */ T read(ID primaryKey); /** Save changes made to a persistent object. */ […]

Java从DAO中删除重复的try,catch,最后的样板

我有一个DAO类,有很多方法,有很多重复的代码: public void method1(…) { Connection conn = null; try { //custom code here } catch (SQLException e) { LOG.error(“Error accessing the database.”, e); throw new DatabaseException(); } catch (QueryNotFoundException e) { LOG.error(“Error accessing the database.”, e); throw new DatabaseException(); } finally { if (conn != null) connectionPool.returnConnection(conn); } public void method2(…) { Connection conn […]

java.lang.IllegalArgumentException“无法使用Spring 4和Hibernate 4设置DAO字段”

我正在尝试按照教程(使用STS):Spring 4和Hibernate 4 Integration Tutorial第1部分:XML配置 除了执行之外,一切都很顺利。 以下是我在部署期间获得的内容: Jan 17, 2015 6:39:22 PM org.apache.catalina.core.ApplicationContext log SEVERE: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘homeController’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.example.web.dao.ActivityDAO com.example.web.HomeController.activityDAO; nested exception is java.lang.IllegalArgumentException: Can not set com.example.web.dao.ActivityDAO field com.example.web.HomeController.activityDAO to com.sun.proxy.$Proxy32 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185) […]

使用hibernate获取更少的列

我有一个包含11列的表,但我需要在我的应用程序中只获取其中的2个,我使用spring / hibernate / DAO组合。 现在我有一个包含所有11个字段的域类,以及映射表中所有11列的映射文件。 我如何使用只获得其中2个而不是全部?

从另一个DAO调用一个DAO?

这有意义吗? 假设我需要从DB获取一个与另一个对象有关的对象(由DB中的外键和我的域对象中的组合表示)。 如果在我的第一个DAO中我获取对象1的数据,则调用对象2的dao,最后(从第一个DAO中,调用对象1中的setter并为其提供先前获取的对象2)。 我知道我可以做一个连接,但我觉得解耦function似乎更合乎逻辑(这就是为什么我对从另一个人调用一个dao持怀疑态度)。 或者我应该将一些逻辑移到服务层? 谢谢 更新 :我想我在答案的帮助下解决了问题:我需要做的就是在对象1的映射中添加以下内容: 我没有必要改变其他任何东西。 谢谢您的帮助!

DAO方法的标准命名约定

是否存在DAO方法的标准命名约定,类似于JavaBeans? 例如,我看到的一个命名约定是使用get()返回单个实体而find()返回实体List。 如果没有,你的团队使用的是什么?为什么?

unit testing使用Spring JDBC的DAO类

我有几个DAO对象用于从数据库中检索信息,我真的想为它们编写一些自动化测试,但我很难弄清楚如何去做。 我正在使用Spring的JdbcTemplate运行实际查询(通过JdbcTemplate准备语句)并将结果映射到模型对象(通过RowMapper类)。 如果我要编写unit testing,我不确定如何/应该模拟对象。 例如,由于只有读取,我会使用实际的数据库连接而不是模拟jdbcTemplate,但我不确定是否正确。 这是批次中最简单的DAO的(简化)代码: /** * Implementation of the {@link BusinessSegmentDAO} interface using JDBC. */ public class GPLBusinessSegmentDAO implements BusinessSegmentDAO { private JdbcTemplate jdbcTemplate; private static class BusinessSegmentRowMapper implements RowMapper { public BusinessSegment mapRow(ResultSet rs, int arg1) throws SQLException { try { return new BusinessSegment(rs.getString(…)); } catch (SQLException e) { return null; } […]