标签: hibernate-annotations

没有@Id的休眠/持久化

我有一个数据库视图,产生一个没有真正主键的结果集.我想使用Hibernate/Persistence将此结果集映射到Java对象.当然,因为没有PK,我无法用任何字段装饰@Id.

在部署时,Hibernate抱怨失踪@Id.我该如何解决这个问题?

java hibernate primary-key hibernate-annotations

31
推荐指数
3
解决办法
5万
查看次数

此位置不允许使用注释@Index

当试图使用@Index注释时javax.persistence,Eclipse给了我这个错误.

我在一个java.util.Date字段之前使用它,在一个用注释的类中@Entity.

之前,我org.hibernate.annotations.Index在完全相同的地方使用它很好.

在我将hibernate-core4.1.9.Final升级到4.3.0.Beta3并将hibernate-commons-annotation4.0.1升级到4.0.2之后,问题就出现了.它说@Index已弃用并推荐javax.persistence一个.

我发现的所有文档和示例都放在了@Index课堂成员面前.我错过了什么?

java jpa hibernate-annotations

28
推荐指数
1
解决办法
2万
查看次数

如何使用注释创建hibernate组合键

我试图用于hibernate annotations将数据插入到MySQL database没有定义主键的表中.

但事实上,该表的2个字段在表中是唯一的.我可以使用hibernate注释实现相同吗?

这是我的代码..

 @Entity
 @Table(name = "RolesMenuItems")
    public class RolesMenuItems {

       @Column(name = "RoleID")
       private String roleID;

       @Column(name = "MenuItemID")
       private String menuItemID;
  /*setter getter methods */
 }
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-mapping hibernate-annotations queryover

27
推荐指数
1
解决办法
6万
查看次数

Hibernate注释或XML配置

我用Hibernate开始了一个新项目.Hibernate注释是更好的选择还是更好的Hibernate XML映射?

我已经使用Hibernate和XML配置,但我不知道注释.

  1. 在进行基于注释的实现时是否有任何问题?
  2. 基于注释的应用程序的维护是更容易还是更复杂?
  3. 哪一个更好(即注释或XML映射)哪一个被广泛使用?为什么?
  4. 如果我在不同的级别使用不同的数据库,即生产或集成或开发级别,我是否需要更改代码?

注意:我不是在比较两种技术,但我想知道在使用最新技术的应用程序中使用哪种技术(即两种方式).

hibernate hibernate-mapping hibernate-annotations

24
推荐指数
2
解决办法
1万
查看次数

Java:Hibernate @OneToOne映射

我试图让Hibernate @OneToOne注释工作,而且在这里没有取得多大成功......

假设我有一个名为的表status,如下所示:

+------------------------------------------------+
|                     status                     |
+------------------------------------------------+
| id | frn_user_id | frn_content_id |   status   |
+----+-------------+----------------+------------+
|  1 |     111     |        0       |  "active"  |
+----+-------------+----------------+------------+
|  2 |      0      |       222      | "inactive" |
+----+-------------+----------------+------------+
Run Code Online (Sandbox Code Playgroud)

我有一个实体User,看起来像这样:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false)
    private Integer id;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "userId")
    private Status status;

    // getters and setters …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa one-to-one hibernate-annotations

23
推荐指数
1
解决办法
7万
查看次数

为什么我的EmbeddedId在休眠状态下不起作用?

我有一个复合主键(IDHOLIDAYPACKAGE, IDHOLIDAYPACKAGEVARIANT)的表HolidayPackageVariant,其中IDHOLIDAYPACKAGE指的是实体HolidayPackage许多一个关系HolidayPackageVariantHolidayPackage.

当我尝试在HolidayPackageVariant中进行compund PK映射时,我收到以下错误:

初始SessionFactory创建failed.org.hibernate.annotations.common.AssertionFailure:在继承状态层次结构中找不到声明类:org.wah.model.holidaypackage.HolidayPackageVariantPrimaryKey

有人可以告诉我这里我做错了什么吗?

我的POJO看起来像这样:

HolidayPackageVariant:

@Entity
@Table(name="HOLIDAYPACKAGEVARIANT")
public final class HolidayPackageVariant {

    private HolidayPackageVariantPrimaryKey idCompound;

    @EmbeddedId
    public HolidayPackageVariantPrimaryKey getIdCompound() {
        return idCompound;
    }

    // other code
}
Run Code Online (Sandbox Code Playgroud)

HolidayPackageVariantPrimaryKey

@Embeddable
public final class HolidayPackageVariantPrimaryKey implements Serializable {

    private Integer idHolidayPackageVariant;
    private HolidayPackage holidayPackage;

    public HolidayPackageVariantPrimaryKey(){}

    public HolidayPackageVariantPrimaryKey(int id, HolidayPackage pkg){
        setIdHolidayPackageVariant(id);
        setHolidayPackage(pkg);
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "IDHOLIDAYPACKAGEVARIANT", nullable = …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa composite-primary-key hibernate-annotations

20
推荐指数
1
解决办法
3万
查看次数

使用Map时指定外键约束名称,使用Hibernate指定@ElementCollection

我对某个领域有一种奇特的映射:

@ElementCollection
@CollectionTable(name = "studentGradeLevel", joinColumns = @JoinColumn(name = "studentId"))
@MapKeyJoinColumn(name = "schoolYearId")
@Column(name = "gradeLevel", nullable = false)
@ForeignKey(name = "fkStudentGrade2Student")
private Map<SchoolYear, GradeLevel> gradeLevels;
Run Code Online (Sandbox Code Playgroud)

SchoolYear是一个实体,GradeLevel是一个枚举.

我正在使用Hibernate工具为架构生成DDL.生成的架构如下:

create table studentGradeLevel (
    studentId numeric(19,0) not null,
    gradeLevel int not null,
    schoolYearId int not null,
    primary key (studentId, schoolYearId)
);

alter table studentGradeLevel 
    add constraint FK1BCA4A883A97C498 
    foreign key (schoolYearId) 
    references schoolYear;

alter table studentGradeLevel 
    add constraint fkStudentGrade2Student 
    foreign key (studentId) 
    references student;
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法更改集合表和用作映射键的实体的表之间的外键的约束名称.

我已经使用@ForeignKey为@OneToMany,@ ManyToMany和其他@ElementCollections指定约束名称没有问题.我试过@ ForiegnKey的"inverseName"属性,但它似乎被忽略了.@MapKeyJoinColumn似乎没有任何会影响它的属性.

有谁知道有没有办法做到这一点?

java hibernate hibernate-annotations

19
推荐指数
2
解决办法
5489
查看次数

Hibernate:OneToMany通过级联保存孩子

在Parent类中有一个列表List.保存父级时,已添加或更改的子级应由休眠保存/更新.

我已经找到了很多这方面的解释,但是,我只是没有得到它的工作.

Parent.class尝试A.

@Entity
public class Parent {
// id and other attributes
@OneToMany(mappedBy = "parent")
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.ALL)
protected List<child> children;
Run Code Online (Sandbox Code Playgroud)

Parent.class尝试B

@Entity
public class Parent {
// id and other attributes
  @OneToMany(mappedBy = "parent", cascade = { javax.persistence.CascadeType.ALL },
 orphanRemoval = true)
 @org.hibernate.annotations.Cascade({ 
 org.hibernate.annotations.CascadeType.PERSIST,
 org.hibernate.annotations.CascadeType.MERGE,
 org.hibernate.annotations.CascadeType.REFRESH,
 org.hibernate.annotations.CascadeType.SAVE_UPDATE,
 org.hibernate.annotations.CascadeType.REPLICATE,
 org.hibernate.annotations.CascadeType.LOCK,
 org.hibernate.annotations.CascadeType.DETACH })
protected List<child> children;
Run Code Online (Sandbox Code Playgroud)

将子项添加到新父项.之后两者都被保存了

sessionFactory.getCurrentSession().saveOrUpdate(parent);
Run Code Online (Sandbox Code Playgroud)

但是,当刷新时,我收到以下错误:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: de.pockettaxi.backend.model.ride.RideSingle
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:265)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:275) …
Run Code Online (Sandbox Code Playgroud)

hibernate cascade one-to-many hibernate-annotations

19
推荐指数
4
解决办法
8万
查看次数

Hibernate - 注释和公共注释之间的区别?

保持简短和甜美:

有hibernate-commons-annotations 4.1.0-Final和hibernate-annotations 3.5.6-Final.

我是个小伙子,他们之间有什么区别,我需要他们两个吗?

试图"避免"JPA,我的意思是使用嵌入在Hibernate中的JPA 2.0标准.

谢谢!

java orm dao hibernate hibernate-annotations

19
推荐指数
1
解决办法
1万
查看次数

如何防止Hibernate更新NULL值

在保存hibernate对象时,hibernate中是否有设置忽略属性的空值

注意
在我的情况下,我通过Jackson将JSON反序列化为Hibernate Pojo.

JSON只包含Pojo的一些字段.如果我保存Pojo,那么不在JSON中的字段在Pojo中为空,而hibernate则更新它们.

我来到了这个环境updateable=false,但这不是100%的解决方案. http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-property

也许有人有另一个想法......

笔记2:

根据Hibernate Docs,dynamicUpdate 注释正是如此

dynamicInsert/dynamicUpdate(默认为false):
指定应在运行时生成INSERT/UPDATE SQL,并且仅包含值不为null的列.

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#mapping-declaration-class

有趣的是,如果您通过dynamic-update文档在XML中定义它,请不要提及NULL值的hanlding.

dynamic-update(可选 - 默认为false):
指定应在运行时生成UPDATE SQL,并且只能包含值已更改的列.

由于我同时使用注释 xml配置,hibernate似乎忽略了我的dynamicUpdate=true注释.

null hibernate hibernate-mapping hibernate-annotations

18
推荐指数
1
解决办法
2万
查看次数