Tag: hibernate mapping

是否可以使用Hibernate或JPA Annotations限制@OneToMany集合的大小?

如果我使用JPA / Hibernate Annotations在POJO中有以下映射集合: @OneToMany(mappedBy = “columnName”, fetch = FetchType.LAZY) @OrderBy(“aField”) @MapKeyJoinColumn(name = “id_fk”) @LazyCollection(value = LazyCollectionOption.EXTRA) private Set collection = new HashSet(); 是否可以将加载的集合的大小限制为特定的数字n,或者将页面大小设置为延迟加载集合的前n个元素,而不从该类的其他实例加载所有项目或任何其他项目(例如@BatchSize)? 请注意,问题显式引用POJO映射,而不是使用Criteria或任何其他方式以编程方式限制显式查询中的大小。 我一直在寻找的可能解决方案是在Hibernate中找到SQL TOP语句的实现,希望作为注释或创建自定义CollectionPersister来修改生成的查询(尽管这需要在支持的方言中实现TOP语句)。

Hibernate 4 – 什么应该替换弃用的@MapKey来映射Map集合,而Key是一个自定义的Hibernate UserType

考虑以下两个表: | User | UserAttribute | |———- |——————-| | userId(PK)| attributeId(PK) | | firstName | userId | | lastName | name | | other | locale | | active | value | 在原始的hibernate-3.2.2 , 一对多双向关系工作正常: @Entity @Table(name = “User”) public class UserHbm { @Id @GeneratedValue(generator = “id-generator”) @Column(name = “userId”) private long id; @Column private […]

如何使用hibernate注释标记外键约束?

我正在尝试使用hibernate注释为我的数据库表编写模型类。 我有两个表,每个表都有一个主键User和Question。 @Entity @Table(name=”USER”) public class User { @Id @Column(name=”user_id”) @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @Column(name=”username”) private String username; // getter and setter } 问题表。 @Entity @Table(name=”QUESTION”) public class Questions extends BaseEntity{ @Id @Column(name=”question_id”) @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(name=”question_text”) private String question_text; // getter and setter } 我还有一个表UserAnswer,它有userId和questionId作为上述两个表中的外键。 但我无法找到如何在UserAnswer表中引用这些约束。 @Entity @Table(name=”UserAnswer “) public class UserAnswer { […]

如何在JPA父实体中将子关联属性用作Map键

我有两个实体Car和CarDescription ,其中CarDescription依赖于表Language另一个外键。 我想要实现的是在Car有一个HashMap ,这样每当我有一个Car实体对象时,我就可以从语言id访问所有描述。 实体Car.java @Entity @Table(name = “Car”) public class Car extends AbstractTimestampEntity implements Serializable { private static final long serialVersionUID = -5041816842632017838L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = “ID”, unique = true, nullable = false) private Long id; @OneToMany(mappedBy=”car”) @MapKeyColumn(name = “language_ID”) // @MapKey(name = “language”) // does not work either private Map carDescription = […]

hibernate中的本机生成器类

我有hibernate映射xml文件的这一部分,我正在寻找本机意味着什么的一个很好的例子。 我知道它与唯一标识符属性有关,但我真的想有一个例子。 对不起新手问题,我是新手一般的hibernate和编程:)谢谢!

Hibernate – Custom Dialect的BigDecimal列映射

我正在使用Hibernate作为我们的对象关系映射,使用一个用于模糊数据库的自定义方言。 我从这个数据库中检索的实体有一列,因此: @Column(name = “GROSS_WEIGHT”, precision = 9, scale = 3) private BigDecimal grossWeight; 数据库将此列定义为数字,精度为9,比例为3。 我可以看到Hibernate生成的SQL来检索数据,当我使用数据库查询工具执行相同的Query时,它返回GROSS_WEIGHT列的“9.68”。 但是,在由Hibernate检索的实体中,’grossWeight’字段包含值’10’, scale为0, precision为2! 在我正在使用的自定义方言类中,我尝试重写以下列类型: registerColumnType( Types.DECIMAL, “numeric($p,$s)” ); registerColumnType( Types.DOUBLE, “numeric($p,$s)” ); registerColumnType( Types.NUMERIC, “numeric($p,$s)” ); 但它仍然只返回(舍入的)整数。 这在我们使用Postgres方言从Postgres检索对象的应用程序的其他地方工作。 知道我应该在方言中做什么,所以我可以让Hibernate正确设置检索到的BigDecimal的精度/比例?

Hibernate映射exception – 无法确定类型:

我试图配置我的实体但hibernate抛出以下exception: org.hibernate.MappingException: Could not determine type for: com.sd.entity.SDUserProductAcess, at table: SDUser, for columns: [org.hibernate.mapping.Column(productAccess)] [PersistEngine] Failed to initialize persistence engine!java.lang.NullPointerException 这些是我的实体: @Entity @Inheritance(strategy = InheritanceType.JOINED) public class SDObject { @Id @GeneratedValue private long sdId; private String sdType; public long getSdId() { return sdId; } public void setSdId(long sdId) { this.sdId = sdId; } public String […]

使用JPA注释自动从子项中删除子项和父项

假设我们有3个Entities对象类: class Parent { String name; List children; } class Child { String name; Parent parent; } class Toy { String name; Child child; } 如何使用JPA2.x(或hibernate)注释: 父删除时自动删除所有子项(一对多) 删除子项时从子项列表中自动删除子项(多对一) 移除子女时自动删除玩具(一对一) 我正在使用Hibernate 4.3.5和mysql 5.1.30。 谢谢

JPA和Hibernate中@MapKey,@ MapKeyColumn和@MapKeyJoinColumn的区别

根据Hibernate文档 ,如果我们想将Map用作实体之间的关联,则可以使用多个注释。 医生说: 或者,映射键映射到专用列。 要自定义映射,请使用以下注释之一: @MapKeyColumn如果map键是基本类型。 如果未指定列名,则使用属性的名称,后跟下划线,后跟KEY(例如orders_KEY)。 @MapKeyEnumerated / @MapKeyTemporal如果映射键类型分别是枚举或日期。 @ MapKeyJoinColumn / @ MapKeyJoinColumns如果映射键类型是另一个实体。 当地图键是可嵌入对象时,@ AttributeOverride / @ AttributeOverrides。 使用密钥。 作为可嵌入对象属性名称的前缀。 如果不使用generics,也可以使用@MapKeyClass来定义键的类型。 通过一些示例,我能够理解@MapKey仅用于将键映射到目标实体的属性,并且该键仅用于获取记录。 @MapKeyColumn用于将键映射到目标实体的属性,该键用于保存和获取记录。 如果这是正确的,请告诉我? 当我需要使用@ MapKeyJoinColumn / @ MapKeyJoinColumns和@MapKeyEnumerated / @MapKeyTemporal时,请告诉我 谢谢!

密钥’PRIMARY’的重复条目’string1-string2′

在使用hibernate和jpa通过MySQL数据库的Spring MVC应用程序中,每当我尝试保存包含子实体的父实体时,我都会收到有关子实体的以下错误消息: Duplicate entry ‘string1-string2’ for key ‘PRIMARY’ 这里, string1和string2指的是子实体的复合主键的两个部分。 我该如何解决这个错误? 以下是在父Address实体中定义实体之间关系的方式: @ManyToOne(cascade = { CascadeType.ALL }, fetch=FetchType.EAGER) @JoinColumns({ @JoinColumn(name = “usecode”, referencedColumnName = “code”, insertable = false, updatable = false), @JoinColumn(name = “usecodesystem”, referencedColumnName = “codesystem”, insertable = false, updatable = false) }) public HL7GeneralCode use; 以下是在子GeneralCode实体中定义关系的方式: @OneToMany(mappedBy = “use”, cascade = {CascadeType.ALL}) private […]