当前位置: 首页 > 知识库问答 >
问题:

JPA(EclipseLink)与Java1.7的次要错误连接

张翰海
2023-03-14

我使用SecondaryTable注释创建了一个实体,将客户表与客户详细信息表连接起来

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL", 
            pkJoinColumns=@PrimaryKeyJoinColumn(name="CUST_DETAIL_ID", referencedColumnName = "CUST_DETAIL_ID"))
public class Customer {
    @Id
    @Column(name = "CUST_ID")
    private Long id;

    @Column(name = "CUST_DETAIL_ID")
    private Long custDetailPk;

    @Column(name = "CUST_DETAIL_ID", table = "CUST_DETAIL")
    private Long custDetailId;

    ...
} 

它使用Java1.6,生成的查询如下所示

SELECT t0.CUST_ID, t0.CUST_DETAIL_ID, t1.CUST_DETAIL_ID, ... FROM CUSTOMER t0, CUST_DETAIL t1 WHERE t1.CUST_DETAIL_ID = t0.CUST_DETAIL_ID
SELECT t0.CUST_ID, t1.CUST_DETAIL_ID, t0.CUST_DETAIL_ID, ... FROM CUSTOMER t0, CUST_DETAIL t1 WHERE t1.CUST_DETAIL_ID = t1.CUST_DETAIL_ID

共有1个答案

瞿子濯
2023-03-14

解决方案来自于避免由字段CUST_DETAIL_ID的名称引起的confusión,JPA需要知道表属于什么,以及属性custDetailId和custDetailPk的名称,它必须按字母顺序排列。

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL", 
            pkJoinColumns=@PrimaryKeyJoinColumn(name="CUST_DETAIL_ID", referencedColumnName = "CUST_DETAIL_ID"))
public class Customer {
    @Id
    @Column(name = "CUST_ID")
    private Long id;

    @Column(name = "CUST_DETAIL_ID", table = "CUSTOMER")
    private Long custDetailId;

    @Column(name = "CUST_DETAIL_ID", table = "CUST_DETAIL")
    private Long custDetailPk;

    ...
} 
 类似资料:
  • 我被要求将大型独立Swing应用程序的数据库连接JAR从Eclipselink JPA 2.0迁移到Eclipselink JPA 3.0实现。 我看到一个很大的不同:Eclipselink 3.0使用雅加达。现在我所要做的就是连接到数据库,但到目前为止我一直没有成功,我不知道为什么。这是我的测试课: 当我运行这个时,我得到了这个异常。 异常告诉我我的persistence.xml或我正在使用的j

  • 我正在尝试使用EclipseLink创建一个表。正在使用的java类是:- EL警告]:2017-04-07 14:04:53.768--ServerSession(1650327539)--异常[EclipseLink-4002](Eclipse持久性服务-2.6.3.v20160428-59C81C5):org.Eclipse.Persistence.exceptions.DatabaseEx

  • 我想使用Eclipse Link作为我的JPA引擎。我们正在使用java.sql.Connection的子类,我想知道我是否可以强制Eclipse Link使用我的连接。我想以编程方式设置连接对象。 类似于

  • 我是JPA的新手。我正在使用maven、Eclipselink2.0和JPA2.0。我已经使用数据库连接创建了实体。这是我的persistence.xml 这是我在尝试运行应用程序时遇到的错误。 --编辑--这是我获取EntityManager的方式

  • 我会尽量短一点 异常在线程"main"javax.persistence.持久性异常:异常[Eclipse链接-4002](Eclipse持久性服务-2.5.2. v20140319-9ad6abd):org.eclipse.persistence.exceptions.数据库异常内部异常:java.sql.SQLExc0019:字段'Target_id'没有默认值错误代码: 1364调用:插入目

  • 我会尽量简短客观。我使用的是JPA Eclipselink2.5.2。在用MySQL脚本创建数据库之后,我正在尝试填充它。编译给了我以下错误: 线程“main”javax.Persistence.persistenceException:异常[EclipseLink-4002](Eclipse Persistence Services-2.5.2.V20140319-9AD6ABD):org.Ec