相关疑难解决方法(0)

如何在JPA配置中设置默认架构名称?

我发现在hibernate配置文件中我们可以设置参数hibernate.default_schema:

<hibernate-configuration> 
   <session-factory>
      ...
      <property name="hibernate.default_schema">myschema</property>
      ...
   </session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)

现在我正在使用JPA,我想做同样的事情.否则我必须为schema每个@Table注释添加参数,如:

@Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }
Run Code Online (Sandbox Code Playgroud)

据我所知,这个参数应该在这部分配置的某个地方:

<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="JiraManager"/>
    <property name="dataSource" ref="domainDataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false"/>
            <property name="showSql" value="false"/>
            <property name="databasePlatform" value="${hibernate.dialect}"/>
        </bean>
    </property>
</bean>

<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${db.driver}" />
    <property name="jdbcUrl" value="${datasource.url}" />
    <property name="user" value="${datasource.username}" />
    <property name="password" value="${datasource.password}" />
    <property name="initialPoolSize" value="5"/>
    <property …
Run Code Online (Sandbox Code Playgroud)

java configuration spring hibernate jpa

58
推荐指数
6
解决办法
15万
查看次数

忽略Hibernate @Where注释

我有一个实体,它与另一个用@Where注释的实体有关联,就像这样

public class EntityA {

    @OneToMany
    @Where(...)
    private List<EntityB> entityBList;

}
Run Code Online (Sandbox Code Playgroud)

最近不可避免的事情发生了,我需要加载不符合@Where子句的EntityB.我可以删除@Where注释,但它被大量使用,所以理想情况下我不想这样做.除了手动加载EntityB的列表,还有另一个查询,我的选择是什么?我可以告诉Hibernate忽略@Where注释吗?

annotations hibernate where-clause

16
推荐指数
4
解决办法
1万
查看次数

从会话工厂以编程方式获取hibernate默认模式名称?

我想知道是否有办法从会话工厂获取默认模式名称,不知何故?我需要得到它的原因是因为我必须使用一个本机SQL,并且我有多个会话工厂用于多个模式和单个数据源.所有生成的hibernate查询都由一个用户运行,该用户可以选择访问其他模式.

hibernate sessionfactory

12
推荐指数
2
解决办法
2万
查看次数

JPA - EclipseLink - 如何更改默认架构

我正在使用weblogic和oracle编写Web应用程序.数据源是通过JNDI配置的,具有受限制的数据库用户,可以将DML转换为表,但不能使用DDL.正如您可能猜到的那样,该用户不是这些表的所有者,但他被授予了访问权限.

假设他是GUEST_USER

该应用程序使用JPA + EclipseLink,并且已经定义了许多实体.我不想在每个实体类中写入更改模式的属性.我已经尝试过使用此代码的SessionCustomizer.

public class MyCustomizer implements SessionCustomizer{

    @Override
    public void customize(Session session) throws Exception {

    session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎有一些未初始化的东西,我得到一个空指针异常,我甚至不确定这是否是在使用它们之前更改连接的模式的方法.任何样品或想法?

在此先感谢您的帮助!

java oracle schema jpa eclipselink

11
推荐指数
1
解决办法
2万
查看次数