【问题标题】:Datanucleus JDO + MySQL create longtext columnDatanucleus JDO + MySQL 创建长文本列
【发布时间】:2011-12-29 16:04:43
【问题描述】:

我试图在我自己的 Java 项目(不是 GAE)中使用 DataNucleus 的 JDO,我需要在我的数据库中存储相当长的文本。

我正在使用 Eclipse 完成所有繁琐的工作,例如增强和创建模式,但不幸的是,所有 String ivars 都映射到 VARCHAR 列。但是我如何让 Datanucleus 为我创建一个 LONGTEXT 列?

我也尝试了@Colunn 注释,但我仍然得到VARCHAR

    @Persistent
    @Column(name="COMPONENT", jdbcType="LONGVARCHAR", length=1000000)
    private String component;

我也尝试将 LONGTEXT 指定为 jdbcType,但 Schematool 通知我,无法使用该数据类型。

提前谢谢你,
新年快乐,
最好的问候,
蒂莫菲。

【问题讨论】:

    标签: mysql jdo datanucleus


    【解决方案1】:

    LONGTEXT 不是 JDBC 类型。它们都在http://docs.oracle.com/javase/6/docs/api/java/sql/Types.html中明确列出了

    DataNucleus 日志告诉您该 JDBC 驱动程序可以使用哪些 JDBC 类型(因为它向使用软件提供了该信息)。它选择将 JDBC 类型 LONGVARCHAR 映射到“LONG VARCHAR”IIRC(使用 SchemaTool“dbinfo”很容易看到)。您显然可以将架构生成到文本文件中,并在应用之前自行更新。

    【讨论】:

    • 感谢您的回复。至于将模式生成到文件中,然后在应用它之前对其进行编辑,我真的很喜欢一切“只是发生”,没有我的交互。据我了解,没有办法告诉 DataNucleus 使用 LONGTEXT 类型,是吗?但是我可以使用特定的 Java 类型(如 google 的 Text)还是自己编写可以专门映射到 LONGTEXT 的 Java 类型?
    【解决方案2】:
    @Persistent
    @Column(name="COMPONENT", jdbcType="CLOB")
    private String component;
    

    数据类型 CLOB 映射到中等文本。但是一旦创建了数据库,您就可以将其更改为 LONGTEXT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多