MySQL是否有一种很好的方式来复制SQL Server功能ROW_NUMBER()?
例如:
SELECT
col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1
Run Code Online (Sandbox Code Playgroud)
然后,我可以,例如,添加一个限制intRow为1 的条件,以获得col3每(col1, col2)对最高的单行.
是否可以创建一个@Entity不包含主键/ Id 的表(来自JPA注释的Hibernate )?
我知道这不是一个好主意; 表应该有一个主键.
我有两个实体如下,当我尝试将项目添加到我的汽车表时,它显示以下错误消息;因此,它不允许我有多个汽车进行'自动'传输.
错误:
#1062 - Duplicate entry 'Auto' for key 'UK_bca5dfkfd4fjdhfh4ddirfhdhesr'
Run Code Online (Sandbox Code Playgroud)
实体:
汽车
@Entity
public class Car implements java.io.Serializable {
@Id
@GeneratedValue
long id;
@Column(name="transmission", nullable = false)
String transmission;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "car")
Set<CarFactory> factories;
...
}
Run Code Online (Sandbox Code Playgroud)
汽车表的样本值:
10 Auto
12 Auto
43 Manual
54 Manual
65 Normal
68 Standard
90 Normal
99 NoGear
Run Code Online (Sandbox Code Playgroud)
CarFactory
@Entity
public class CarFactory implements java.io.Serializable {
@Id
@JoinColumn(name="transmission",referencedColumnName = "transmission")
@ManyToOne
Car car;
@Id
@JoinColumn(name="factory_id", referencedColumnName= "id")
@ManyToOne
Factory factory;
... …Run Code Online (Sandbox Code Playgroud) 我有这个豆:
@Entity
@Table(name = "accesos")
public class Acceso implements Serializable {
/** */
@Column(name = "idUser")
private String idUser;
/** */
@ManyToOne
@JoinColumn(name = "idArea")
private Area area;
/** */
@ManyToOne
@JoinColumn(name = "idRol")
private Rol rol;
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
原因:org.hibernate.AnnotationException:未为实体指定标识符:com ... Acceso
我该如何设置这个豆?我需要的是根据用户ID获取他有权访问的所有ROL-AREA。
我尝试将更@Entity改为@Embedded,但是当我进行搜索时没有返回任何结果,即使在日志中也没有执行SQL语句。
所以我在SqlServer数据库中有一个View,但是此视图没有任何主键或Id列。我的Java项目中有一个实体来表示这样的视图:
@Entity
@Immutable
public class FooViewEntity implements Serializable {
private static final long serialVersionUID = 348348L;
@Column(name = "ColA")
private String colA;
@Column(name = "ColB")
private String colB;
@Column(name = "ColC")
private String colC;
}
Run Code Online (Sandbox Code Playgroud)
但是每次我尝试使用存储库从视图中获取时,都会出现此错误:
org.hibernate.AnnotationException: No identifier specified for entity: com.FooViewEntity
Run Code Online (Sandbox Code Playgroud)
遵循本教程之后,我将实体更改为:
@Entity
@Immutable
public class FooViewEntity implements Serializable {
private static final long serialVersionUID = 348348L;
@Id
@GeneratedValue(generator="uuid2")
@GenericGenerator(name="uuid2", strategy="uuid2")
@Column(columnDefinition = "BINARY(16)", updatable = false, insertable = false)
private UUID uuid;
@Column(name = "ColA") …Run Code Online (Sandbox Code Playgroud)