Java 在Hibernate中同时使用@Column和@Formula
我有一个POJO,现在我从一个列中得到一个值。但是,我正在使用Hibernate@Formula从另一个表中选择最新记录来检索它。我想轻轻地走,以免弄坏任何东西 所以我想做的是这样的:Java 在Hibernate中同时使用@Column和@Formula,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,我有一个POJO,现在我从一个列中得到一个值。但是,我正在使用Hibernate@Formula从另一个表中选择最新记录来检索它。我想轻轻地走,以免弄坏任何东西 所以我想做的是这样的: class SomeDto { private someField; @Column("PREVIOUS_FIELD_COLUMN", nullable = false, length = 1) @Formula("@NEW RETRIEVING LOGIC@") public
class SomeDto {
private someField;
@Column("PREVIOUS_FIELD_COLUMN", nullable = false, length = 1)
@Formula("@NEW RETRIEVING LOGIC@")
public getSomeField() {
...
}
这样我就可以将someField值存储在前一个_FIELD_列中,同时根据新的条件检索该值
但是,现在Hibernate似乎忽略了@Column注释,因为我得到了以下错误:
SQLIntegrityConstraintViolationException:ORA-01400:无法插入
空入
我在日志中看到,Hibernate跳过了正在生成的insert语句中的前一个_FIELD_列,但没有列出它,也没有从POJO设置值
非常感谢您的帮助 您可以选择只将以前的值重新映射到一个新字段,以便它继续为旧记录保留,并将旧值重新映射到@Formula逻辑 从技术上讲,你所关心的只是允许你的应用程序仍然以同样的方式与对象交互,但你希望从其他地方获得价值;然而,能够保留对旧价值的访问和存储
上述解决方案允许这样做。您可以选择只将以前的值重新映射到一个新字段,以便继续为旧记录保留该值,并将旧值重新映射到@Formula逻辑 从技术上讲,你所关心的只是允许你的应用程序仍然以同样的方式与对象交互,但你希望从其他地方获得价值;然而,能够保留对旧价值的访问和存储
上面的解决方案正好可以做到这一点。我认为您将使用ColumnTransformer而不是这样的公式
class SomeDto {
private someField;
@Column("PREVIOUS_FIELD_COLUMN", nullable = false, length = 1)
@ColumnTransformer(read = “@NEW RETRIEVING LOGIC@”)
public getSomeField() {
...
}
有关更多信息,请参见此我认为您将使用ColumnTransformer而不是这样的公式
class SomeDto {
private someField;
@Column("PREVIOUS_FIELD_COLUMN", nullable = false, length = 1)
@ColumnTransformer(read = “@NEW RETRIEVING LOGIC@”)
public getSomeField() {
...
}
有关更多信息,请参阅此非常感谢!!!酷,工作,正是我在寻找的:谢谢你很多次!!!酷,有效,正是我想要的:是的,谢谢你的答案,这应该行得通,但是ColumnTransformer的答案用了稍微干净的方式:是的,谢谢你的答案,这应该行得通,但是ColumnTransformer的答案用了稍微干净的方式: