为什么在我添加transient标签时,Hibernate会给我返回这个错误?

huangapple go评论102阅读模式
英文:

Why does hibernate give me this error when I put the transient tag?

问题

我正在尝试修复Kiuwan指出的漏洞。

问题是其中一个漏洞是将"Transient"类型添加到"Date"类型的变量中,当我这样做时,会出现以下错误。

  1. Caused by: org.hibernate.AnnotationException: com.pack.keys.MyClassKey没有持久性id属性:com.pack.logic.MyClass.id

如果我在"Date"类型变量中不使用"transient"关键字,则不会显示错误,我的项目可以编译。

MyClass

  1. @Table(name = "tablename")
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Data
  5. public class MyClass{
  6. @EmbeddedId
  7. private MyClassKey id;
  8. private String string1;
  9. //更多字符串...

MyClassKey

  1. @Embeddable
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Data
  5. public class MyClassKey implements Serializable {
  6. private static final long serialVersionUID = 1L;
  7. private transient String string1;
  8. private transient String string2;
  9. private transient String string3;
  10. @Temporal(TemporalType.TIMESTAMP)
  11. private transient Date myDate;
  12. }

谢谢。

英文:

I am trying to fix the vulnerabilities that Kiuwan is indicating to me.

The problem is that one of them is adding the Transient type to a Date type variable, when I do it it gives me the following error.

  1. Caused by: org.hibernate.AnnotationException: com.pack.keys.MyClassKey has no persistent id property: com.pack.logic.MyClass.id

If i dont put transient in Date dont show the error and my project compile.

MyClass

  1. @Table(name = "tablename")
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Data
  5. public class MyClass{
  6. @EmbeddedId
  7. private MyClassKey id;
  8. private String string1;
  9. //Many String more...

MyClassKey

  1. @Embeddable
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Data
  5. public class MyClassKey implements Serializable {
  6. private static final long serialVersionUID = 1L;
  7. private transient String string1;
  8. private transient String string2;
  9. private transient String string3;
  10. @Temporal(TemporalType.TIMESTAMP)
  11. private transient Date myDate;
  12. }

Thanks.

答案1

得分: 0

因为transient是Hibernate中用于排除属性的。它具有与添加@Transient注释相同的效果:

链接:https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Transient.html

英文:

Because transient is excluding attributes from Hibernate. It has the same effect as adding @Transient annotation:

https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Transient.html

huangapple
  • 本文由 发表于 2020年5月5日 17:46:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/61610198.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定