【问题标题】:Open JPA - @TableGenerator with composite primary key for auxiliary table打开 JPA - @TableGenerator 与辅助表的复合主键
【发布时间】:2015-05-26 05:19:54
【问题描述】:

我有下面的实体,它使用TABLE 策略来生成它的 id,并且工作得很好。

@Entity
@Table(name = "Test_Table")
public class SomeEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableGenerator(name = "TABLE_GEN", table = "AUX_TABLE", pkColumnName = "KEY_NAME", valueColumnName = "KEY_VALUE", pkColumnValue = "someValue", allocationSize = 10)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GEN")
    @Column(unique = true, nullable = false, precision = 20)
    private long someId;

    // few other properties and getter / setter
}

下面是AUX_TABLE用来获取id值的表结构

DOMAIN varchar2(4) NOT NULL,
KEY_NAME varchar2(100) NOT NULL,
KEY_VALUE 十进制(2) NOT NULL,
CONSTRAINT AUX_TABLE_PK 主键(域,KEY_NAME)

因为AUX_TABLE 具有复合主键,由DOMAINKEY_NAME 组成;我无法弄清楚如何在pkColumnName 中指定它们以及它们在@TableGeneratorpkColumnValue 属性中的各自值。

我尝试了pkColumnName = "DOMAIN,KEY_NAME",但由于以下异常而失败了

原因:org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-00904: "DOMAIN,KEY_NAME": 无效标识符 {prepstmnt 9864699 SELECT KEY_VALUE 从 AUX_TABLE WHERE "DOMAIN,KEY_NAME" = ? FOR UPDATE [params=?]} [code=904, state=42000] 在 org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219) 在 org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:203) 在 org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access 700 美元(LoggingConnectionDecorator.java:59) 在 org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:1118)

@TableGeneratorjava docs 没有提及这种特殊情况。

我正在使用 Open JPA 2.3.0JDK 1.7.0_45

【问题讨论】:

  • 在给定的表结构中,没有看到您尝试用作主键的任何列名。确定您是否定义了具有适当名称的列。
  • @ViswanathD 我现在已经在问题中添加了主键(它已经存在于我的数据库中

标签: java oracle jpa openjpa


【解决方案1】:

你不能。 TableGenerator 有一个简单的键/值结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2013-06-07
    相关资源
    最近更新 更多