@Version注释如何在JPA中起作用?
我找到了各种答案,摘录如下:
JPA使用实体中的版本字段来检测对同一数据存储记录的并发修改.当JPA运行时检测到同时修改同一记录的尝试时,它会向尝试最后提交的事务抛出异常.
但我仍然不确定它是如何工作的.
同样来自以下几行:
您应该考虑版本字段不可变.更改字段值具有未定义的结果.
这是否意味着我们应该将我们的版本字段声明为final?
我想用带有多列的@OrderBy注释对OneToMany字段进行排序,并为每个列指定排序顺序,但我似乎无法在任何地方找到有关如何或不可能的信息.注释的规格说:
orderby_list::= orderby_item [,orderby_item]*
orderby_item::= property_or_field_name [ASC | DESC]
Run Code Online (Sandbox Code Playgroud)
所以我的猜测是不可能的,但无论如何我更愿意问.
在部署时抛出以下内容会引发HibernateException:
@OrderBy("field1 DESC, field2 DESC, field3 DESC, field4 DESC")
Run Code Online (Sandbox Code Playgroud)
生成:
Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个表,其促销 ID 注释为
@SequenceGenerator(name="GEN_PROMID", sequenceName="SEQ_PROMOTIONID", allocationSize=1)
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="GEN_PROMID")
@Column(name="PROMOTIONID")
private Long promotionid;
Run Code Online (Sandbox Code Playgroud)
但即使allocationSize 被指定为1,hibernate 也会不一致地增加数字。以下是数据库中 Promotionid 的最新降序值
1440
1420
1407
1406
1405
1404
1403
1402
1401
1400
1380
1360
1342
1341
1340
1320
1305
Run Code Online (Sandbox Code Playgroud)
我在某处读到 Hibernate 可能会使用 hilo seq_hilo algotihm 和org.hibernate.id.SequenceHiLoGenerator生成器,即使@SequenceGenerator已定义。另请阅读以下链接,我们可以使用它@GenericGenerator来解决链接中的此问题
有人可以在这方面提供详细信息吗?语法@GenericGenerator看起来并不简单。该@SequenceGenerator用还是不用。有时@SequenceGenerator可以完美地工作并生成正确的主键。
附言。我正在使用 Hibernate 3.5 并使用 Oracle 11g DB
编辑
序列码-
CREATE SEQUENCE SEQ_PROMOTIONID
INCREMENT BY 1
START WITH 100;
Run Code Online (Sandbox Code Playgroud)
编辑2
更多分析表明,至少“总是”插入一个可被 20 整除的值。由于Oracle的序列默认缓存为20,因此看起来hibernate的正常增量与缓存值之间存在一些冲突。还观察到,当插入之间有时间间隙时,它通常会转到下一个可被 20 …
我使用的是Netbeans IDE 8.0.2和eclipselink 2.5.2.在打开连接时,这种情况发生在下面,问题是每次都不会发生这种情况.异常"Departmento"中描述的实体完全遵循其他类的模式,即我们的系统已经包含大约500个实体类,并且仅在新类中发生此异常.该实体是由Netbeans的"数据库实体类"选项生成的,并添加到持久化XML ...
引发者:javax.persistence.PersistenceException:异常[EclipseLink-28018](Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):org.eclipse.persistence.exceptions.EntityManagerSetupException异常描述:PersistenceUnit [totemPU]的预部署失败.内部异常:异常[EclipseLink-7250](Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):org.eclipse.persistence.exceptions.ValidationException异常描述:[class entidade.Item]使用非实体[class entidade. Departamento]作为关系属性[field departamento]中的目标实体.
实体Departamento
@Entity
@Table(name = "departamento")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Departamento.findAll", query = "SELECT d FROM Departamento d"),
@NamedQuery(name = "Departamento.findById", query = "SELECT d FROM Departamento d WHERE d.departamentoPK.id = :id"),
@NamedQuery(name = "Departamento.findByIdEmpresa", query = "SELECT d FROM Departamento d WHERE d.departamentoPK.idEmpresa = :idEmpresa"),
@NamedQuery(name = "Departamento.findByDescricao", query = "SELECT d FROM Departamento d WHERE d.descricao = :descricao"),
@NamedQuery(name = …Run Code Online (Sandbox Code Playgroud)