11
votes

Hibernate - Postgres- Les listes ciblées peuvent avoir au plus 1664 entrées

Nous utilisons Hibernate, Postgres 8.3x

Nos entités sont nombreuses à un mappé avec une récupération désireuse. Nous avons plusieurs associations avec beaucoup à un mappage.

Comme nous avons ajouté de nouvelles colonnes à toutes les autres entités existantes, Nous obtenons ci-dessous une erreur:

Les listes cibles peuvent avoir au plus 1664 entrées

J'ai cherché Internet et ils disent que cela est dû à Plus Nombre d'instructions de sélection dans la requête SQL (générée par Hibernate)

Pouvez-vous tout organisme s'il vous plaît laissez-nous savoir s'il y a une configuration (à postgres) Pour mettre à jour des colonnes numériques max dans la configuration ou toute autre solution pour résoudre ce problème.

Merci d'avance.


1 commentaires

Essayez de me convaincre qu'un si grand nombre de colonnes est nécessaire. Même avec les jointures, cela devrait être au moins 400-500 colonnes par table?


4 Réponses :


2
votes

Il s'agit du nombre maximal de colonnes de PostgreSQL, c'est correct. Mais pourquoi avez-vous besoin de plus de colonnes? Il suffit de faire une certaine normalisation et votre problème est parti. Ou n'utilisez pas du tout une base de données relationnelle, vous toucherez toujours le nombre maximal de colonnes lorsque vous ne normalisez pas.


2 commentaires

Merci Frank Heikens. Il ne s'agit pas du nombre de colonnes dans une seule table de base de données. Mais lorsque nous rejoignons plusieurs colonnes (par CreateCreaticy dans Hibernate), nous obtenons cette erreur.


Hmmm, je vois, maintenant je l'obtiens. Je ne peux pas vous aider là-bas, nous n'avons jamais eu ce problème, n'a jamais eu autant de colonnes dans nos questions.



2
votes

Il y a définitivement quelque chose faux avec votre modèle / mappages / requêtes. La bonne façon de résoudre ce problème est de travailler sur votre modèle / mappages / requêtes, pas sur le nombre maximal de colonnes dans PostgreSQL (je n'obtiens même pas comment vous l'avez atteint, une requête qui récupère de 1664 colonnes ne fait pas de sens).


1 commentaires

L'erreur indique les entrées, pas des colonnes. Vous pouvez le faire avec un très grand où identifiant les valeurs (?,?, ...) Requête. par opposition à l'endroit où id in (...)



1
votes

Essayez xxx


2 commentaires

forums.hibernate.org/...


Désolé Martin. Ce n'est pas correct. Si nous augmentons la profondeur d'extraction maximale, plus de colonnes seront incluses dans la liste de récupération et il lancera une erreur.



4
votes

Parfois, cela se produit quand il y a trop de @manytoone (fetch = fetchtype.eager) dans le projet. Donc, quand n'est pas nécessaire le fetchtype.eigner, mettre @manytoone (fetch = fetchtype.lazy)

Ceci aide-moi, essayez!


1 commentaires

Oui, c'était mon problème. Merci.