草庐IT

java - 如何通过JPA注解指定SQL注释?

有没有办法通过JPA注解来指定SQL注释?表和列的注释。 最佳答案 至少对于MySQL是有办法的。这取决于您的数据库引擎。对于MySQL,您可以将注释添加到columnDefinition。这是列的示例:/***Databaseid.*/@javax.persistence.Id@javax.persistence.GeneratedValue(strategy=javax.persistence.GenerationType.AUTO)@javax.persistence.Column(columnDefinition="SMAL

java - 在 Hibernate 中通过 ID 获取对象

我注意到我们的高级开发人员使用以下代码通过ID检索实体:@OverridepublicSourceget(Longid){Sessionsession=getSession();if(session==null)session=sessionFactory.openSession();finalSourcesource=(Source)session.load(Source.class,id);Hibernate.initialize(source);returnsource;}这段代码有什么好处?为什么不直接写return(Soruce)getSession().get(Source

java - 创建自定义 Hibernate UserType - isMutable() 是什么意思?

我正在Hibernate中为项目创建一个自定义UserType。在我谈到isMutable方法之前,它一直相对简单。我试图弄清楚这种方法在契约(Contract)方面意味着什么。这是否意味着我正在为其创建UserType的类是不可变的,或者它是否意味着持有对此类实例的引用的对象永远不会指向不同的实例?我在HibernateCommunityWiki中找到了一些示例他们返回true的地方,因为对象本身是可变的-http://www.hibernate.org/73.html.社区wiki中的其他示例返回false,但没有说明原因,即使它们也是可变的。我查了JavaDoc,也不是很清楚。来

java - 是否可以使用 hibernate 创建带有空格的列名?

我正在为电子元件构建数据库系统。不幸的是,其他将使用我的一些表的程序需要在列名中包含空格。我在我的hbm.xml文件中尝试过类似这样的属性:...propertyname="partGroup"column="partgroup"type="string"...当然,hibernate不会用该列名创建表。有没有办法使用hibernate来做到这一点?谢谢:] 最佳答案 有一种方法,将表名或列名用反引号括起来。来自文档:5.4.SQLquotedidentifiersYoucanforceHibernatetoquoteanident

java - (N)Hibernate "session-per-application"被认为是特定用例的邪恶?

好的,每个人都知道不鼓励使用(N)Hibernate的全局session每个应用程序。但是我有一个非常具体的、显然是非标准的用例,它似乎是理想的解决方案。总而言之,我的(服务器)应用程序的所有持久数据基本上都在内存中,并且从不查询数据库以进行正常操作。首先使用数据库的唯一原因是数据在进程的生命周期内存活。我只想在应用程序启动时查询数据库以将所有内容提取到内存中。实际上,该数据库只有大约5-10MB。现在的问题是,如果我遵循session必须是短暂的建议,我必须为每个业务交易合并()我的所有数据,或者以某种方式手动跟踪所有更改,而不是利用NHibernate的自动更改跟踪。这使得持久性很

java - Hibernate:单表中的父/子关系

我几乎看不到任何关于以下与Hibernate相关的问题的指示。这与使用具有父子关系的单个数据库表实现继承有关与自身的关系。例如:CREATETABLEEmployee(empIdBIGINTNOTNULLAUTO_INCREMENT,empNameVARCHAR(100)NOTNULL,managerIdBIGINT,CONSTRAINTpk_employeePRIMARYKEY(empId))此处,managerId列可能为空,或者可能指向Employee表的另一行。业务规则要求员工了解他所有的下属,并让他了解他/她的经理。业务规则还允许行具有空managerId(组织的CEO没有经

java - getCurrentSession 在网络中 hibernate

我正在使用hibernate和jsp/servlet编写一个基于Web的应用程序。我已经阅读了sessionFactory.getCurrentSession和sessionFactory.openSession方法。我知道它们之间的基本区别(使用getCurrentSession您不必关闭连接,当您提交事务时,您的session将自动关闭)。根据我的理解,我们应该选择getCurrentSession并通过session-per-request来完成。让我们考虑以下场景:方法A调用getCurrentSession并获取当前session在方法A中,使用步骤1中的session启动事

java - Hibernate 3 关于删除级联

我有一个关于预订的多对一映射。预订必须属于一个房间。一个房间可以有多个预订。如果一个房间被删除,我希望该房间的所有预订也被删除。我将如何使用hibernate注释来执行此操作?@EntitypublicclassBookingimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateLongid;privateDatestartDate;privateDateendDate;privateDatecreatedDate;@ManyToOne@JoinColumn(name="roomId"

java.lang.ClassCastException : [Ljava. lang.Object;不能转换为 entity.UserEntity

我想在hibernate状态下查询两个表。用户实体中的featch3表(用户角色配置文件)。用hql查询:query="selectue,ue.roleEntity.roleIdfromUserEntityue,RoleEntityrefetchallpropertieswhereue.roleEntity.roleId=re.roleIdandue.username='reza'andue.password='123456'";并运行查询:try{sessionFactory=HibernateUtil.getSessionFactory();session=sessionFacto

java - hibernate insert to a collection 导致删除,然后再次插入集合中的所有项目

我有很多可能的关系CohortGroup和Employee。每当我将Employee插入CohortGrouphibernate时,都会从解析表中删除该组并再次插入所有成员,再加上新成员。为什么不直接添加新的?组内注解:@ManyToMany(cascade={PERSIST,MERGE,REFRESH})@JoinTable(name="MYSITE_RES_COHORT_GROUP_STAFF",joinColumns={@JoinColumn(name="COHORT_GROUPID")},inverseJoinColumns={@JoinColumn(name="USERID"