相关疑难解决方法(0)

在@Table(name ="tableName")中 - 使"tableName"成为JPA中的变量

我正在使用JPA,我需要将"tableName"变为变量.

在数据库中,我有很多表,我的代码需要访问我指定要读取的表.

@Entity
@Table(name = "tableName")
public class Database implements Serializable {...............}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java jpa ejb-3.0

15
推荐指数
1
解决办法
5万
查看次数

JPA:如何在运行时指定与类对应的表名?

(注意:我对Java非常熟悉,但不熟悉Hibernate或JPA - 但:)

我想编写一个通过JPA与DB2/400数据库通信的应用程序,现在我可以获取表中的所有条目并将它们列出到System.out(使用MyEclipse进行逆向工程).我知道@Table注释导致名称与类静态编译,但我需要能够使用一个表,其中名称和模式在运行时提供(他们的定义是相同的,但我们有很多他们).

显然这不是那么容易做到的,我很欣赏这一点.

我目前选择Hibernate作为JPA提供程序,因为它可以处理这些数据库表没有记录.

所以,问题是,我如何在运行时告诉JPA的Hibernate实现,类A对应于数据库表B?

(编辑:在Hibernate NamingStrategy中重写的tableName()可能允许我解决这个内在限制,但我仍然希望与供应商无关的JPA解决方案)

java hibernate jpa

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

是否可以在Hibernate/JPA中动态定义列名?

所以我有这个现有的数据库模式,其中包含许多我想用JPA/Hibernate建模的表.每个表具有相同的30个附加列组(以允许运行时扩展记录的字段数).

CREATE TABLE XX
  (
    "ID"          VARCHAR2(100 BYTE) NOT NULL ENABLE,
    "USER_LABEL"      VARCHAR2(256 BYTE),
    "CREATION_DATE"   NUMBER(38,0) NOT NULL ENABLE,
    "ADD_STR_FIELD_0" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_0" NUMBER(38,0),
    "ADD_DBL_FIELD_0" NUMBER(38,0),
    "ADD_STR_FIELD_1" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_1" NUMBER(38,0),
    "ADD_DBL_FIELD_1" NUMBER(38,0),
    "ADD_STR_FIELD_2" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_2" NUMBER(38,0),
    "ADD_DBL_FIELD_2" NUMBER(38,0),
    "ADD_STR_FIELD_3" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_3" NUMBER(38,0),
    "ADD_DBL_FIELD_3" NUMBER(38,0),
    "ADD_STR_FIELD_4" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_4" NUMBER(38,0),
    "ADD_DBL_FIELD_4" NUMBER(38,0),
    "ADD_STR_FIELD_5" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_5" NUMBER(38,0),
    "ADD_DBL_FIELD_5" NUMBER(38,0),
    "ADD_STR_FIELD_6" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_6" NUMBER(38,0),
    "ADD_DBL_FIELD_6" NUMBER(38,0),
    "ADD_STR_FIELD_7" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_7" NUMBER(38,0),
    "ADD_DBL_FIELD_7" NUMBER(38,0),
    "ADD_STR_FIELD_8" VARCHAR2(200 BYTE),
    "ADD_LNG_FIELD_8" NUMBER(38,0), …
Run Code Online (Sandbox Code Playgroud)

java orm hibernate jpa

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

如何在运行时配置JPA表名?

我有一个问题,我只有一个数据库可供使用,但我有多个服务器,我希望他们为每个服务器使用不同的表名.

现在我的班级被配置为:

@Entity
@Table(name="loader_queue")
class LoaderQueue
Run Code Online (Sandbox Code Playgroud)

我希望能够让dev1服务器指向loader_queue_dev1表,dev2服务器指向loader_queue_dev2表.

有没有办法可以使用或不使用注释来做到这一点?

我希望能够有一个单独的构建,然后在运行时使用类似系统属性的东西来更改该表名.

java orm hibernate jpa hibernate-mapping

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

Hibernate或iBatis还是其他什么?

在我的项目中,我需要在运行时在数据库之间切换.我试图使用Hibernate,但卡在一个地方,我需要用数据库中的表映射对象.问题是,我有几个带前缀的表:documents2001,documents2002 ......据我所知,我无法在运行时使用表映射类.我尝试使用iBatis,但问题是在运行时期间数据库更改.在iBatis中,这很难做到.

也许有些建议,我该怎么用?

我的要求:

  • 能够在运行时连接到不同的数据库
  • 能够在运行时更改表(如果类映射到表,就像它在Hibernate中一样).

更新: 好的,我将尝试解释:
我必须编写应用程序,它可以在运行时连接到不同的数据库.app的用户可以选择,连接哪个数据库.所有数据库都具有相同的结构.除此之外,用户还可以在数据库中的表之间切换.表具有相同的结构.

  • 为什么我假设,我不能使用Hibernate:在Hibernate类中映射表,所以我不能在运行时更改表.这不允许我选择我可以连接的表.
  • 为什么我假设,我不能使用iBATIS.在iBATIS中,在运行时期间很难连接到不同的数据库.因此,用户将无法在运行时连接到不同的数据库.

也许我可以使用另一种工具?

java database hibernate ibatis

3
推荐指数
1
解决办法
3307
查看次数

标签 统计

java ×5

hibernate ×4

jpa ×4

orm ×2

database ×1

ejb-3.0 ×1

hibernate-mapping ×1

ibatis ×1