我正在使用JPA的Hibernate实现(Hibernate版本: 4.2.1,JPA版本: 1.8.1)。我有一些本机查询,其结果被映射到我的自定义POJOS列表(标记为@Entity)。但是,当查询执行时,我在MySQL模式中创建了一个空表,其中包含了POJO中的属性。考虑到不可能将本机查询结果映射到POJO而不将其标记为“实体”,如何确保没有将任何表添加到现有模式中。
POJO
package abc;
@Entity
public class Myclass
{
@Id
private Integer productId;
private String productName;
public MyClass(){
}
/**getters and setters for productId and productName**/
}用于执行本机查询的代码段
List<Integer> productIdList = new ArrayList<>();
productIdList.add(1);
productIdList.add(20);
productIdList.add(34);
List<MyClass> myList=(List<MyClass>)(entityManager.createNativeQuery("select p.productId, p.productName from products p where p.productId IN (:productIdList)",MyClass.class).setParameter("productIdList", productIdList).getResultList());发布于 2016-07-26 08:09:20
我也遇到了同样的问题,因为我尝试了hibernate.hbm2ddl.auto参数的所有可能值,但都没有成功。简单地说,我希望有一个像do_nothing这样的选项,但是在文档中没有这样的选项。因此,我的解决方案是将@Table("tbl_to_remove_<YourObjectName>")添加到每个实体中,并删除所有以db中的tbl_to_remove启动的新创建的表,而且每次重新启动应用程序时都是这样。
从社区文档:这里中,列出了可能的选项
hibernate.hbm2ddl.auto在创建SessionFactory时自动验证或导出架构DDL到数据库。使用create,当SessionFactory显式关闭时,数据库模式将被删除. 例如,验证\ update _update_ create \create创建-drop
https://stackoverflow.com/questions/38496896
复制相似问题