Dans @Table (name = “tableName”) – transformez “tableName” en une variable en JPA

J’utilise JPA et j’ai besoin de transformer le “nomTable” en une variable.

Dans une firebase database, j’ai plusieurs tables et mon code doit accéder à la table où je le spécifie.

@Entity @Table(name = "tableName") public class Database implements Serializable {...............} 

Des idées?

Vous pouvez faire quelque chose comme ça, si c’est ce qui vous préoccupe, je suppose. Je n’ai jamais essayé, c’est juste une conjecture sauvage . Mais c’est la pratique habituelle – je suis pour les requêtes nommées; oui, c’est une tout autre chose.

 @Entity @Table(name = Database.tableName) public class Database implements Serializable { public static final Ssortingng tableName = "TABLE_1"; ............... } 

Mais je ne vois pas pourquoi quelqu’un ferait cela. Pourriez-vous nous dire ce que vous faites? Pourquoi vous avez peu de tables exactement la même définition?

[Édité]

J’ai essayé votre solution. Cela n’a pas fonctionné, il indique: La valeur de l’atsortingbut annotation Table.name doit être une expression constante.

Alors, n’est-ce pas assez clair? Je veux dire que tu ne peux pas faire ça. Et je crois que c’est assez logique. Si vous souhaitez qu’Hibernate génère votre schéma, vous pouvez définir toutes les entités souhaitées, dans le schéma et avec les relations appropriées.

Si vous voulez seulement référencer / lire le nom de la table, c’est possible comme dans le code ci-dessous. Si vous voulez changer, ce n’est pas possible comme l’a dit Pascal.

 @Entity @Table(name = Database.tableName) public class Database implements Serializable { public static final Ssortingng tableName = "TABLE_1";//this variable you can reference in other portions of your code. Of course you cannot change it. ............... } 

Spécifier le nom de la table au moment de l’exécution n’est pas possible, ce n’est tout simplement pas le fonctionnement de JPA (et je ne suis toujours pas sûr de répondre à vos besoins). Mappez différentes entités sur votre ensemble de tables et exécutez diverses requêtes ou construisez-les de manière dynamic (éventuellement à l’aide de l’API Criteria) en fonction de l’entrée du côté client, ou utilisez autre chose que JPA (comme iBATIS).

Si vous voulez sélectionner des données de différentes tables,

alors vous pouvez utiliser:

@Subselect("")

au lieu de :

@Table(name = "tableName") .