Questions tagged «hibernate»

Hibernate是一种Java语言的对象关系映射(ORM)库,使开发人员能够以远远超出对象/关系映射的方式在其应用程序中使用POJO风格的域模型。

3
JpaRepository不支持DML操作[删除查询]
我已经编写了一个查询来删除我的扩展接口中的某些对象JPaRepository,但是当我执行查询时会抛出异常!谁能为我解释一下? 查询: public interface LimitRepository extends JpaRepository<CLimit, Long> { @Query("delete from CLimit l where l.trader.id =:#{#trader.id}") void deleteLimitsByTrader(@Param("trader") CTrader trader); } 我收到此错误,请问,请为我解释一下,谢谢大家:) 例外: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.query.domain.CLimit l where l.trader.id =:__$synthetic$__1] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:318) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:369) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573) at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:495) …


7
休眠自动递增ID
我有一个使用hibernate和注解的j2ee应用程序。如何在我的pojo类中注释Id字段,以将其设置为自动增量或自动生成。在添加bean时,我是否将该字段留在bean中为null?

3
通过引用未知目标实体属性
我在被注释的对象中建立一对多关系时遇到问题。 我有以下内容: @MappedSuperclass public abstract class MappedModel { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id",nullable=false,unique=true) private Long mId; 然后这个 @Entity @Table(name="customer") public class Customer extends MappedModel implements Serializable { /** * */ private static final long serialVersionUID = -2543425088717298236L; /** The collection of stores. */ @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.LAZY) …

7
@Test之后的回滚事务
首先,我在StackOverflow上找到了很多与此相关的线程,但是它们都没有真正帮助我,因此很抱歉提出可能重复的问题。 我正在使用spring-test运行JUnit测试,我的代码如下所示 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {}) public class StudentSystemTest { @Autowired private StudentSystem studentSystem; @Before public void initTest() { // set up the database, create basic structure for testing } @Test public void test1() { } ... } 我的问题是我希望我的测试不影响其他测试。所以我想为每个测试创建类似回滚的东西。我为此进行了很多搜索,但到目前为止我什么都没找到。我为此使用Hibernate和MySql

10
将Hibernate Query.list()强制转换为List <Type>的“正确”方法是什么?
我是Hibernate的新手,我正在写一个简单的方法来返回与特定过滤器匹配的对象列表。List&lt;Foo&gt;似乎是自然的回报类型。 不管我做什么,除非雇用了ugly,否则似乎都无法使编译器满意@SuppressWarnings。 import java.util.List; import org.hibernate.Query; import org.hibernate.Session; public class Foo { public Session acquireSession() { // All DB opening, connection etc. removed, // since the problem is in compilation, not at runtime. return null; } @SuppressWarnings("unchecked") /* &lt;----- */ public List&lt;Foo&gt; activeObjects() { Session s = acquireSession(); Query q …

4
JPA多个嵌入式字段
JPA实体类是否可以包含两个嵌入式(@Embedded)字段?一个例子是: @Entity public class Person { @Embedded public Address home; @Embedded public Address work; } public class Address { public String street; ... } 在这种情况下,aPerson可以包含两个Address实例-家庭和工作。我在Hibernate的实现中使用JPA。当我使用Hibernate Tools生成架构时,它仅嵌入一个Address。我想要的是两个嵌入式Address实例,每个实例的列名都经过区分或以某些前缀(例如home和work)为前缀。我知道@AttributeOverrides,但这要求每个属性都应单独覆盖。如果嵌入式对象(Address)变大,则可能会很麻烦,因为每个列都需要单独覆盖。

13
关闭休眠日志记录控制台输出
我正在使用休眠3,并希望阻止它将所有启动消息转储到控制台。我尝试注释掉log4j.properties中的stdout行,但是没有运气。我在下面粘贴了我的日志文件。另外,我在标准项目结构中使用eclipse,并且在项目文件夹的根目录和bin文件夹中都有一个log4j.properties副本。 ###将日志消息直接发送到stdout ### #log4j.appender.stdout = org.apache.log4j.ConsoleAppender #log4j.appender.stdout.Target = System.out #log4j.appender.stdout.layout = org.apache.log4j.PatternLayout #log4j.appender.stdout.layout.ConversionPattern =%d {ABSOLUTE}%5p%c {1}:%L-%m%n ###直接向文件hibernate.log发送消息### log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = hibernate.log log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =%d {ABSOLUTE}%5p%c {1}:%L-%m%n ###设置日志级别-有关更详细的日志记录,将'info'更改为'debug'### log4j.rootLogger =警告,标准输出 #log4j.logger.org.hibernate =信息 log4j.logger.org.hibernate =调试 ###记录HQL查询解析器活动 #log4j.logger.org.hibernate.hql.ast.AST =调试 ###仅记录SQL #log4j.logger.org.hibernate.SQL =调试 ###记录JDBC绑定参数### log4j.logger.org.hibernate.type = info #log4j.logger.org.hibernate.type =调试 ###日志架构导出/更新### …

1
JPA中的多个唯一约束
有没有一种方法可以使用JPA指定在不同的列集上应该有多个唯一约束? @Entity @Table(name="person", uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"})) public class Person { // Unique on code and uid public String code; public String uid; // Unique on username public String username; public String name; public String email; } 我已经看到了特定于休眠的注释,但是由于我们仍在确定休眠和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。

14
避免在未获取的惰性对象上进行Jackson序列化
我有一个返回用户对象的简单控制器,该用户的属性坐标具有休眠属性FetchType.LAZY。 当我尝试获取该用户时,我总是必须加载所有坐标才能获取用户对象,否则,当杰克逊尝试序列化User时,将抛出异常: com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理-没有会话 这是由于Jackson试图获取此未获取的对象。这里是对象: public class User{ @OneToMany(fetch = FetchType.LAZY, mappedBy = "user") @JsonManagedReference("user-coordinate") private List&lt;Coordinate&gt; coordinates; } public class Coordinate { @ManyToOne @JoinColumn(name = "user_id", nullable = false) @JsonBackReference("user-coordinate") private User user; } 和控制器: @RequestMapping(value = "/user/{username}", method=RequestMethod.GET) public @ResponseBody User getUser(@PathVariable String username) { User user = userService.getUser(username); …

2
休眠中的枚举
在DAO中具有一个其值来自Java枚举的字段通常很有用。一个典型的示例是登录DAO,您通常在其中具有一个将用户表征为“ NORMAL”或“ ADMIN”的字段。在Hibernate中,我将使用以下2个对象以(半)类型安全的方式表示此关系: class User { String username; String passwd; UserType type; } class UserType { private enum Type {ADMIN, NORMAL}; private String type; //Setters/Getters for Hibernate public void setType(String type); public String getType(); //Setters/Getters for user public void setUserType(UserType.Type t); public UserType.Type getUserType(); public static UserType fromType(UserType.Type t); } …
82 java  hibernate  dao 

3
JPA:@JoinColumn和@PrimaryKeyJoinColumn之间的区别?
@JoinColumn和之间的确切区别是@PrimaryKeyJoinColumn什么? 您使用@JoinColumn的列是外键的一部分。典型的列可能看起来像(例如,在具有附加属性的联接表中): @ManyToOne @JoinColumn(name = "...") private OtherClass oc; 如果我也将列也提升为a / PK(又称为识别关系)会怎样?由于该列现在是PK,因此我必须用标记@Id: @Id @ManyToOne @JoinColumn(name = "...") private OtherClass oc; 现在的问题是: 是@Id+@JoinColumn上面一样@PrimaryKeyJoinColumn? @ManyToOne @PrimaryKeyJoinColumn(name = "...") private OtherClass oc; 如果没有,那@PrimaryKeyJoinColumn有什么用?

2
查询指定了联接提取,但是选择列表中不存在所提取关联的所有者
我正在选择两个id列,但指定了错误: org.hibernate.QueryException: **query specified join fetching, but the owner of the fetched association was not present in the select list** [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=r,role=null,tableName=REVISIONS,tableAlias=revision1_,origin=ENTITY_CHANGED_IN_REVISION entitychan0_,columns={entitychan0_.REV_ID ,className=ru.csbi.registry.domain.envers.Revision}}] [ select ec.id as entityChangeId, r.id as revisionId from ru.csbi.registry.domain.envers.EntityChange as ec inner join fetch ec.revision as r where ec.groupEntityId = …
82 hibernate  join  fetch 

4
@Entity和@Table中的名称属性
我有一个疑问,因为@Entity和@Table中都存在name属性 例如,允许名称属性具有相同的值 @Entity(name = "someThing") @Table(name = "someThing") 我也可以在同一班上使用不同的名字 @Entity(name = "someThing") @Table(name = "otherThing") 谁能告诉我这两者之间有什么区别,为什么我们两者都具有相同的属性?

13
如何解决由休眠双向映射导致的json序列化器中的循环引用?
我正在编写一个序列化程序以将POJO序列化为JSON,但陷入循环引用问题。在休眠的双向一对多关系中,父级引用子级,而子级引用又回到父级,此时我的序列化程序死亡。(请参见下面的示例代码) 如何打破这个循环?我们可以获取对象的所有者树以查看对象本身是否存在于其所有者层次结构中的某个位置吗?还有其他方法可以找到参考是否为圆形吗?或任何其他想法来解决这个问题?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.