JPA中Entity实体类@Table注解schema属性失效

最近的工作项目中需要查询mysql数据库中的多个schema,使用的数据库框架是jpa,想当然的认为在实体类@Table注解的schema属性里面填上对应的schema名称,就可以正确访问到对应的schema里的表。然而实际上总是会访问到默认的schema,也就是填写数据库url时所指定的。(这里我想要访问的schema和默认的schema里存在同名同结构的表,所以并没有报错,如果不存在则会提示相应错误)

接下来了解了一下@Table注解的schema属性的机制,会将查询涉及到的表名翻译成schema.tablename,再将转换过后的SQL传给数据库执行。但是当我们自己写查询语句,并且使用了nativeQuery = true时,程序会直接将所写的查询语句传给数据库,因此如果没有自己手动在表名前指定schema,则会访问默认的schema。这也是我一开始出错的原因。

解决方法:不使用nativeQuery,或者在写SQL的时候把表名写成schema.tablename的形式

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EclipseLink是一种JPA实现框架,它提供了很多JPA相关的工具和插件,可以方便地生成JPA实体类。下面是使用EclipseLink生成JPA实体类的步骤: 1. 在Eclipse创建一个JPA项目。 2. 在项目创建JPA实体类,可以使用@Entity@Table、@Id、@Column等注解进行标注: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private Integer age; // Getter/Setter方法 } ``` 3. 在项目创建JPA仓库接口,继承自JpaRepository: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 4. 在项目创建persistence.xml文件,配置JPA实现和数据源: ```xml <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>com.example.User</class> <properties> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase"/> <property name="javax.persistence.jdbc.user" value="username"/> <property name="javax.persistence.jdbc.password" value="password"/> </properties> </persistence-unit> </persistence> ``` 5. 在项目运行,EclipseLink会根据实体类的定义自动创建数据表。 需要注意的是,EclipseLink默认使用JDBC作为数据源,如果您需要使用其他数据源(比如连接池),可以在persistence.xml进行配置。另外,EclipseLink还提供了很多其他的JPA相关功能,比如查询方法的自动生成、分页查询等,具体使用方法可以参考EclipseLink的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值