hibernate-orm icon indicating copy to clipboard operation
hibernate-orm copied to clipboard

HHH-17514 Metamodel generation fails on Map<String, Map<String, Object>> field

Open theit opened this issue 1 year ago • 1 comments

I have a Maven project that uses an embeddable type having a field with a nested map:

@Embeddable
public class MyAttributes   {
  private @Valid @ElementCollection @JdbcTypeCode(Types.LONGVARBINARY) Map<String, Map<String, String>> parameters = new HashMap<>();
...

Code generation via the annotation processor org.hibernate.orm:hibernate-jpamodelgen:6.4.0.Final fails with the following error message:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Error generating JPA metamodel: Range [14, -1) out of bounds for length 30

The problem is to be found in ImportContextImpl.java from tooling/metamodel-generator, method private String importTypes(String originalArgList):

As long as this method is called with "simple" parameters, for example a map with a class as key and a non-generic second class as second parameter, say java.lang.String,java.lang.Long (type parameters as in Map<String,Long>), this works. When you have a field such as the one from above, it is called with the following parameter: java.lang.String,java.util.Map<java.lang.String,java.lang.String>

Because the method actually splits the given string into an array at each comma, this results in an array having the following contents:

  1. java.lang.String
  2. java.util.Map<java.lang.String
  3. java.lang.String>

Because importTypes(String) calls importType(String) with each array element as parameter, this fails at the second argument and results in the above mentioned error message.

The fix is quite simple:

Instead of splitting the complete string at each comma, split it only at the first one. That way you only have two parts:

  1. java.lang.String
  2. java.util.Map<java.lang.String,java.lang.String>

and the logic works (again).

https://hibernate.atlassian.net/browse/HHH-17514

theit avatar Dec 15 '23 15:12 theit

Thanks for your pull request!

This pull request does not follow the contribution rules. Could you have a look?

❌ All commit messages should start with a JIRA issue key matching pattern HHH-\d+     ↳ Offending commits: [9c74b9af8d230838f5e5cf405705b881de2133d5, 4848ed18df709768a5449e9e066e3fe57c2a3ed7, 33c7dc57f6c66c7ea9af4eaff261545625c9243e, 1b6d8cbcd09379ed272f1e15bda8a245634f1e0a, 5e53b3763bc80d799d74a1cfd33d9e69e47329a5, 379658b1652f7432ec5abe3920fd2707704fad86, 00481b9c38b47a36ffdaf36d31b4f53b8fee704b, 8ed723e164e7393ba29934a036494a3189aa7b57, 5b6db5be17df35eccfd2992583d999b250df32c9, 653683de20819ce5f91ad68bb77d61576e0ef01d, fb5cd0ef6519d3818f922a9c1087f74103770cd4, 924261ebcfc7d7d4827636cd65d4d79aed9eb8b3, 7f8a3cf757f9ca823a282bf058bc6a46ca180e63, 4e6953c2bf707eb26adf4b126aaf7adbf1945ab9, 8f0e1944739f886462f75eb95e47a8c34fb89da2, 77130a31bf26718d68ea76a0e7eebe6efeb75dc7, 91e193d876befcc495a59b0931479c3630dfc679, 50f0256cfdb41b2ba56a40da156e763183db9633, 15003b73ffd96cda4f5fb068b33862a3065915b1, 45867c627003baf976e707396f58c0c9e0ea7d4f, 83c7b929df681b98c46ef9c0edb8891f65c54545, 384caf8546d625cb7be558532b2b5b0b900a42a6, 7b0d755ea4190094c69169b9c298e1e7cf433bca, 453a087567b72abed51948c4e0dfdf8115d48fc4, d2ef28625ee64040604435c22a7e9cdbaccc5724, cbfbb6e3b18424d88e16dbf128f625e513bf2f1b, 4a5c5f880277d8c74765d3cef181e4cb4291994a, 446c92045fd3fa685d8354294efdbe00aff648c7, b3a2b3e8d58e501bc672fb4cb78de52b624eb49c, 0c9904f362c02e1d45d75d75859aa1c86a08283f, 55125293c165e67f22cc69c38163f9bd962a53a8, da0d5ad2b7bee57ec777b4207ed30515f2b99534, 290eba4fe85577fb7e16cd746c9fe99ae578159d, 7b59c483457aaf2082600bf7c22acac286ead22d, 26f2c52f268fdc63b0540add8c629fdbd7b6c0f9, ee26b1247b471a743b23a70693290160554cc2e1, f67f489ed3d3ce4a2e6b08f7ff48d0f46be235a3, 0bf4304042190bacc6426d9f9fbe827dde2842a0, fb017d705ca4e5e524485bce3a0dc01d20d84eca, 07ae039a4a9451d4ee50b726f0799eaa0e6c7b36, 10e5fa30931d1cb85757fe941bd8ae05a1e78d95, ea6a5ca2a495869fbd4d383e2205eec211feb9f6, 4d6085d7d779bc5e7c657eac43dde714fef08ff6, d97c0a02709094f75d0b4e644bece7d18022bd86, cddb5c9b24676a8d394b05c4cbdfc2b0b0191c29, fdbc5715d4c4364ae27170ba383b6f39cdca1052, b6dba29add36331cf18eac6535318fe7f3cbf3f4, 2c2dd94ba0696b9c273f1c648a49b6e09268a5bf, 3d56de310644e05a00210229e986ad91e5976efa, e54f20f92091aa29e403b85640a8bc139440ce50, 0a41e6770bc5e0306d2bee2305ce010a29b357cf, f29392bdd39d50eb94335e9e8caa970d1d8e2319, ebfbe4e3dd5ce1596fb85a6fd1c0564f591d76f3, 70b3dca3c8a1bbf5f986fcd36bd6777fec9c4636, fccdb1841208d3927448af3f42ae9c89101ad64a, c802868a56063fcf0490319e98a816bec668488b, 5a9b2b2921a19113405c26cc6a56c801eabb03e8, 5ba77badea2a9d15a87cf662ea65293c5b5952e8, 5e3b0c65907effdc7e2743d0ca978da57d9a9396, b0948303bc8084976100d3b80d0ebf9a87b7dcb7, c5b709c3afa0a5d551bde9b5f9dc60c8bccccfb8, d514a1284d1ec267a8ca6629926135128a54b66b, 621c58a5e7cbb215bea1518610cd638f1edf8b7f, d09d17892019c09bcab1e91169019ada6159c25f, 7f4541987526beb8399c63ba926d9af0cd40ce65, f6633f2decd0ab102ab73b2c019f5019185a4352, 030b3c5d6820e447d6c833dce016306fe46be897, 97202f3930bf577b4a21edf8f925f30ccf406016, b2b7832c392a699762f468ea57bf345fd1b0fda8, 6c824f3182855d724e2c2c2674f89408d2ef3127, c172192c10de6e98199c8bb7d10e05afafb4de84, 1c3e08a8daa61bdd25304eca2705a2d5fe90bafc, 80fd44a3eb375d2297f05bb2944634a6b005e074, 9d9616c6dff8e39cf75f516ff726fcab81af25cb, 7f52dbc3015ccc21e6b135513a58983049957829, df9bc23cc2136d315e12fd8a7ced5a857f3fa4a3, dd3facc7235b26c50cace6e823d1bc9a43ad3cd3, 1be37208749a491d22dc1f79f4c0e2c1bcd48a73, 23b57d63913fc245b3aefb586fde8110e6b230eb, 1e8b1e03f498baebde9db9a6fc76e38875997981, ad4e1aef897d3597e61205313a7c2c47144a5708, d9f265b61041f3320676f7027cef599f463fe8d6, 9de7852fae2d445883e28e1f24bb064cc4f8cdb0, c83617f61295713308ab7734c52f6742f12d79cf, ed54ba3485f4555a396dc418cb9c98d4fca83aca, 74232955dddec7471b6b95f7f8076d70500c3af3, bd7653dc0eb3c0d778dffb91413427bdf19fa2a2, 17d0af925acffdf4b042a57fc116492bb2272bca, 337253c30680473e0e59b557cd56aa2b8c60125b, dfd3fbd62b0e2a44f8143cfd436028cb8dddeb9c, 5070607eecafdac331823283f5c1cf6585b79036, 0c4b964d0a0cbbc91da5f1bd9d059857e56a3dab, 294db785da600d104e793da3e696922b01ea5ad7, e1d44b2e555102f731d34435990246dbe04e563c, 291b1295e97083e26f9c485c558504a6981a2ffc, e1e2176c7e02add1742f449d766079a308230b4e, cb6f7707ab2f131327684c33e169b67df1ee44d5, ae302f2d862b1d32f052d2942cbf069e6e465315, a0d6d196fa5fb477c9739136a0ab79e66c22a235, 27f09e0b0642c218ea4dc7d45300d48124ee9fdb, 2080d74dd58f65e881279f7466a27a791cda5ac8, 8a044665557493e64c3d621cdcf0f49d561c8739, d981152a7f1bc3340ec4f9e7c4ee52a73c9e928b, ef3c4591a3b55f5e694f09bf31c0dd9ea6ce0df5] ❌ The PR title or body should list the keys of all JIRA issues mentioned in the commits     ↳ Issue keys mentioned in commits but missing from the PR title or body: [HHH-17835, HHH-17898, HHH-17908, HHH-17828, HHH-16672, HHH-17881, HHH-17885, HHH-17857, HHH-17826, HHH-17887, HHH-10921, HHH-17935, HHH-17832, HHH-17934, HHH-17947, HHH-17932, HHH-17912, HHH-17783, HHH-17918, HHH-17946, HHH-17761, HHH-17559, HHH-17953, HHH-17954, HHH-17955, HHH-17966, HHH-17969, HHH-17951, HHH-17174, HHH-17975, HHH-17916, HHH-17980, HHH-17988, HHH-17987, HHH-14968, HHH-17984, HHH-17991, HHH-17994, HHH-17993, HHH-17965, HHH-17999, HHH-17818, HHH-17883, HHH-17983, HHH-17964, HHH-17967, HHH-18023, HHH-18024, HHH-18034, HHH-18036, HHH-18011, HHH-18018, HHH-18046, HHH-18020, HHH-17837, HHH-18050, HHH-18065, HHH-18066, HHH-18068, HHH-18067, HHH-18043, HHH-18053, HHH-17834, HHH-17827, HHH-18032, HHH-17385, HHH-17229, HHH-17305, HHH-17421, HHH-18079, HHH-18077, HHH-15862, HHH-18080]

› This message was automatically generated.