【问题标题】:JPA type mappings issueJPA 类型映射问题
【发布时间】:2013-12-31 11:04:09
【问题描述】:

我正在使用 JEE 技术(EJB、JPA 持久性、MySQL DB、Apache TomEE 服务器)实现简单的博客应用程序。 我不确定如何注释实体内的某些类型以正确映射到适当的 mysql 类型。

例如,我有一个名为“Post”的实体,其中包含“content”字段,这是我对其进行注释的方式:

@Column(name = "post_content", columnDefinition = "TEXT", nullable = false)
private String content;

此字段代表博客文章的内容,其长度不受限制。 (博客文章可能很长)。我知道在 JPA 中默认情况下,String 被映射到 mysql varchar(255) 类型。这是我收到的警告;

WARN   [http-bio-8080-exec-10] openjpa.jdbc.Schema - Existing column "post_content" on table "post" is incompatible with the same column in the given schema definition. Existing column:
Full Name: post.post_content
Type: longvarchar
Size: 65535
Default: null
Not Null: true
Given column:
Full Name: post.post_content
Type: varchar
Size: 255
Default: null
Not Null: true

注释这类字段的正确方法是什么?

【问题讨论】:

    标签: mysql hibernate jpa ejb openjpa


    【解决方案1】:
    @Column(name = "post_content", length=65535)
    private String content;
    

    警告抱怨列属性的默认值为 255,但数据库列的长度为 655535。如果您指定正确的长度,警告将消失。

    【讨论】:

    • 感谢您的快速回复。我忘了放长度参数。另外,我认为我需要明确指定我希望字符串映射到的一种 mysql 文本类型(varchar、longvarchar、text、blob)。 (显然持久化提供者正在处理类型转换)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多