[JAVA] BigInteger opslaan m.b.v. Datanucleus

Pagina: 1
Acties:

  • Richum
  • Registratie: Maart 2010
  • Laatst online: 28-03 11:50
Beste mede-tweakers,

Ik probeer in Java doormiddel van de persistence manager van Datanucleus 4.1 een BigInteger object op te slaan in een MySQL database.

Dit lukt echter niet omdat de persistence manager besluit een BigInteger te mappen naar een NUMERIC veld in MySQL.


SQL:
1
2
3
4
5
6
7
8
Creating table `GENERICKEY`
CREATE TABLE `GENERICKEY`
(
    `ID` BIGINT NOT NULL,
    `EXPONENT` NUMERIC NULL,
    `MODULES` NUMERIC NULL,
    CONSTRAINT `GENERICKEY_PK` PRIMARY KEY (`ID`)
) ENGINE=INNODB


Dit veld krijgt standaard een precisie van 10 waardoor ik maximaal 10 getallen voor de komma kan opslaan. Echter probeer ik de modulus van een RSAPublicKey op te slaan welke een precisie van ~600 vereist.

Volgens de documentatie van MySQL kan een NUMERIC veld een maximale precisie van 65 hebben dus dit is sowieso geen optie.

Nu blijkt er volgens de Javadoc een BigIntegerStringConverter te bestaan. Echter kan ik nergens vinden hoe ik in de code kan aangeven dat ik deze converter wil gebruiken.

In de documentatie spreekt men wel over het maken van een custom type converter maar ik maak natuurlijk liever gebruik van de ingebouwde variant.

Ik heb geen eerdere ervaring met Datanucleus dus waarschijnlijk maak ik een hele basale fout maar ik zie momenteel door de bomen het bos niet meer 8)7.

Ik heb het forum doorzocht maar kwam geen vergelijkbare topics tegen. Hopelijk kunnen jullie mij in de goede richting wijzen. Alvast bedankt!

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zou eens naar de unittests kunnen kijken voor voorbeelden. Daar duik ik meestal in als ik ergens geen documentatie van kan vinden. Maar hier word je dus ook niet wijzer van?

[ Voor 19% gewijzigd door RobIII op 13-08-2015 16:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Hier zie ik een voorbeeld van het toepassen van een custom TypeConverter op een veld door middel van een Extension annotation. Alleen moet je dan wel de naam weten van de TypeConverter die je in de extension wil referencen, dit zou in de plugins.xml moeten staan.

Het lijkt er dan op dat je dit nodig hebt:
Java:
1
2
@Extension(vendorName="datanucleus", key="type-converter-name", value="dn.biginteger-string")
BigInteger modulo;

  • Richum
  • Registratie: Maart 2010
  • Laatst online: 28-03 11:50
Heren, bedankt voor jullie reacties. Ik had inderdaad gekeken naar de (custom) type converters maar ik liep vast met het aanspreken van de ingebouwde converters doordat ik niet op de reference name kon komen. Deze waren natuurlijk gewoon gedefineerd in de plugins.xml in de JAR van Datanucleus zelf 8)7.

Wederom iets met bomen en bos ... nogmaals bedankt! _/-\o_

*Problem Solved*