没有主键的表的JPA实体

没有主键的表的JPA实体

问题描述:

我有一个没有主键的MySQL表,我必须将它映射到一个JPA实体。我无法以任何方式修改表格。没有主键的表的JPA实体

由于实体必须有一个主键,我必须指定一个。如果我确定我在实体中使用的字段(或字段,我应该选择使用复合主键)在表中始终是唯一的(而不是空),那么表可以实现没有在CREATE TABLE中指定的主键导致任何问题?

这是正确的。 JPA无法知道它作为PK使用的列是否实际上是数据库中的真正PK。如果这些专栏实际上是PK,那么它应该没问题。

如果伪PK列没有正确编制索引,您可能会遇到一些性能问题,但是 - JPA会假定它会执行良好的执行查询。

JPA本身不会分析您的数据库。只是不要使用通用方法使用主键(find/merge/...)而是使用命名查询,例如使用jpql更新语法。

@Entity 
@Table(name = "login") 
@NamedQueries({ 
     @NamedQuery(name = "Login.updateLastOnline", 
     query = "UPDATE Login l SET l.lastOnline = :newDate WHERE l.loginId = :loginId") 
     }) 
public class Login implements Serializable 
{ 

不要紧,如果登录ID是主键

+0

为什么能找到和合并导致问题? – tputkonen 2010-07-05 11:43:09

+0

@tputkonen - 可能我没有明确写出,但我试着说,你可以通过使用JPQL避免使用查找/合并。 – Dewfy 2010-07-05 11:55:56

+0

我同意这一点,只是我们在使用与这些表格合并时遇到了一些奇怪的行为,并且知道原因 – tputkonen 2010-07-05 12:02:50