Java Hibernate表或视图不存在Oracle
我在Oracle上执行hibernate查询时遇到问题: my persistence.xml:Java Hibernate表或视图不存在Oracle,java,sql,hibernate,Java,Sql,Hibernate,我在Oracle上执行hibernate查询时遇到问题: my persistence.xml: <description>ProfileEntityManager</description> <class>com.entity.User</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <
<description>ProfileEntityManager</description>
<class>com.entity.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@XXX:9999/db"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name = "hibernate.show_sql" value = "true" />
</properties>
我的java类:
//System.out.println(uid);
List<User> lp = null;
try {
lp = em.createNativeQuery("SELECT iu FROM User iu WHERE iu.userId = ?", User.class)
.setParameter(1, uid).getResultList();
} catch (Exception e) {
System.out.println(e.getMessage());
writeLog(fw, e.getMessage());
}
你能帮我找出错误吗
注意:如果使用具有相同连接和查询的PreparedStatement,则我没有任何问题,因此这不是权限问题 任一
<property name="hbm2ddl.auto">create</prop>
<property name="hbm2ddl.auto">update</prop>
创建
或
<property name="hbm2ddl.auto">create</prop>
<property name="hbm2ddl.auto">update</prop>
更新
您尝试将HQL
查询与EntityManager.createNativeQuery
方法一起使用。这是一个错误
请尝试以以下方式更正您的查询:
em.createNativeQuery(“从SCHEMA.USER中选择*其中USER\u ID=:usrid”,USER.class)
.setParameter(“usrid”,uid)
.getResultList();
如果对所有实体使用模式
,则可以将其放入hibernate配置:
然后按以下方式更正实体定义:
@实体
@表(name=“USER”)
公共类用户{
// ...
}
然后更正您的查询:
em.createNativeQuery(“从{h-schema}用户中选择*,其中用户_ID=:usrid”,USER.class)
.setParameter(“usrid”,uid)
.getResultList();
顺便说一句,我建议你更正你的hibernate方言定义。你应该尽可能使用特定的方言。例如,如果您使用Oracle10g,您应该使用
org.hibernate.dialent.oracle10gdialent
。您仍然可以使用org.hibernate.dialent.Oracle9iDialect
,但在oracle10galent
中定义的一些新功能将不可用。从用户iu中选择iu
???您是否有列名iu
?您应该使用SELECT*FROM User iu
它是相同的,也可以使用SELECT*。我也有同样的错误,嗯,我不知道这个属性,但在线搜索似乎使我能够创建或更新模式。表用户已经存在,您能解释一下吗?谢谢:)嗨,谢谢,现在它工作了!