gpt4 book ai didi

hibernate - 可能的错误 : Hibernate 4. 3.5 @Lob 注释在用于字段时在 Postgres 中不起作用

转载 作者:行者123 更新时间:2023-11-29 12:12:43 25 4
gpt4 key购买 nike

在一个实体中,如果我使用

@Lob
private String data;

public String getData() {
return data;
}

public void setData(String data) {
this.data = data;
}

然后该字段在数据库中创建为 varchar(255)

但是如果我这样使用:

private String data;

@Lob
public String getData() {
return data;
}

@Lob
public void setData(String data) {
this.data = data;
}

然后该字段在数据库中创建为 text

我认为在这两种情况下都应该是数据库中的文本

javax.persistence.Lob

@Target@Target(value={FIELD, METHOD}) 所以我认为它可能是错误。

这是错误还是您知道说明差异的文档?


相关pom.xml片

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.5.Final</version>
</dependency>

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.2-1004-jdbc41</version>
</dependency>

最佳答案

在第一种情况下,很可能注释放错了地方。这就是它回到默认值的原因。如果不建议持久性提供者,则不支持在 getter 和字段中混合持久性注释。永远不会咨询 setter 中的注释。如果真的需要,那么 AccessType是正确的工具。

例子:

@Entity
public class Box {
@Id
int id;
@Lob //here is right place because also 'id' does have annotation in field
String code;

@Lob //this annotation is ignored because 'id' does have annotation in field
//if getId() (instead of field) is one with annotation,
//then this is right place
public String getCode() {
return code;
}

@Lob // persistence annotation here is not at all supported
public void setCode(String code) {
this.code = code;
}

}

Hibernate 使用@Id 注释的位置来确定是访问类型字段还是属性。根据 JPA 2.0 规范,不一致的注释放置根本不会大声,因此无法保证其行为方式:

All such classes in the entity hierarchy whose access type is defaulted in this way must be consistent in their placement of annotations on either fields or properties, such that a single, consistent default access type applies within the hierarchy.

关于hibernate - 可能的错误 : Hibernate 4. 3.5 @Lob 注释在用于字段时在 Postgres 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24181914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com