【问题标题】:Spring Roo Oracle and UnderscoreSpring Roo Oracle 和下划线
【发布时间】:2011-06-27 11:06:48
【问题描述】:

我有一个关于 spring roo 和数据库的问题。 我有一个名为 personName 的字段,在 oracle 中以列创建为 person_Name

我有办法避免使用下划线。我想命名我的列 personname 可以解决这个问题,但是我可以要求 spring 不要添加下划线吗?

【问题讨论】:

  • 请记住,Oracle 表/列名称不区分大小写,因此驼峰式大小写不会反映在数据库中。 RUNNINGWORDSTOGETHERMAKESITHARDTOREAD

标签: oracle spring-roo


【解决方案1】:

如果您需要通用解决方案(而不是“修复”一些单点(abaloghs 答案)),您可以为您的 JPA 提供程序指定命名策略。

示例见:JPA (Hibernate) and custom table prefixes

【讨论】:

    【解决方案2】:

    默认情况下,Roo 引用 JPA 实现来确定列名。您可以使用 --column 属性覆盖默认值:

    entity --class Foo
    field string --fieldName FooBar --column fooBar
    

    【讨论】:

    • 谢谢。下次我会这样做。但是如何用新的列名更新我的项目。我现在已经很深入了。我尝试替换所有出现的列名,但遇到了很多麻烦......
    • 您有一个 Foo.java,其中定义了您的 personName 字段。在那里你应该有一个@Column 注释,改变'name'的值。
    【解决方案3】:

    你好, 顺便说一句,我认为不可能对表名中带有下划线的数据库进行逆向工程:

    1. 将创建和编译相应的域类,因为 Java 接受类名中的下划线
    2. 测试将在不引发任何问题的情况下执行
    3. 一切都将成为 GUI 的脚手架
    4. 您将成功将其部署到 tomcat 上,您的应用程序页面将显示在您的浏览器中
    5. 您可以填写表格来创建对象的新实例
    6. 但是如果你点击保存 --> 内部错误

    如果您查看 tomcat 日志,您会发现众所周知的异常:javax.servlet.jsp.JspTagException: No message found under code ...

    原因是您的类名在 message_xx.properties 文件中被截断。 删除下划线之前的所有内容,因此找不到任何消息以显示您的记录已成功保存。

    ROO shell 在创建 jpa 实体时而不是在运行时引发错误会很好......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多