标签: mappedsuperclass

Hibernate IndexColumn中的值0,以base = 1映射

我们对Oracle数据库使用Hibernate Annotations 3.4.0GA和Hibernate Core 3.3.2.GA(也称为当前稳定版本)

我们有一个一对多的映射,其中base = 1,在一段时间内工作正常,但上周我们在数据库中发现了一些条目,其中索引列包含值0,这导致了各种问题.

所以我的问题是:当用base = 1映射时,有没有人知道如何将值0引入一对多关系的索引列?可能与使用泛型或MappedSuperclass有关.

请注意,代码相当复杂,因为还涉及继承.

以下是课程的相关部分:

// SuperClass of the One side
@MappedSuperclass
public abstract class AbstractReihung<Tp, Tw, Te extends AbstractReihungElement<Tp, Tw>>
{
  @OneToMany(cascade = CascadeType.ALL)
  @Cascade(
  {
      org.hibernate.annotations.CascadeType.ALL,
      org.hibernate.annotations.CascadeType.DELETE_ORPHAN
  })
  @JoinColumn(name = "parent_id", nullable = false)
  @IndexColumn(name = "position", base = 1, nullable = false)
  private List<Te> elements = new ArrayList<Te>();
}

// Super Class of the Many side
@MappedSuperclass
public abstract class AbstractReihungElement<Tp, Tw> extends AbstractDbObject
{
  @ManyToOne
  @JoinColumn(name = "parent_id", …
Run Code Online (Sandbox Code Playgroud)

java generics hibernate one-to-many mappedsuperclass

5
推荐指数
1
解决办法
1577
查看次数

Symfony2 MappedSuperClass和doctrine:generate:entities

我有一个"Offer"类(MapperSuperclass)和另外两个扩展它的类,"PrivateOffer"和"PublicOffer".

我遇到的问题是,当我运行"doctrine:generate:entities"命令时,"PrivateOffer"和"PublicOffer"这两个类都填充了与MappedSuperclass"Offer"类相同的属性,以及它的getter和setter方法.

如果我删除它们并仅在"Offer"类中使用它们,那么"doctrine:schema:update"可以正常工作,但是我需要再次运行"doctrine:generate:entities",因此每次扩展类都会丢失它.

为什么"doctrine:generate:entities"会复制两个类中的所有属性和setter/getter方法,如果它们扩展了MappedSupperclass?

谢谢你们 :)

OfferClass:

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
/**
 * Offer
 *
 * @ORM\MappedSuperclass()
 */
class Offer
{
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    protected $name;

    ....more properties...
}
Run Code Online (Sandbox Code Playgroud)

PrivateOfferClass:

<?php

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * PrivateOffer
 *
 * @ORM\Table(name="private_offer")
 * @ORM\Entity
 */
class PrivateOffer extends Offer
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * Get id
     * …
Run Code Online (Sandbox Code Playgroud)

doctrine mappedsuperclass symfony

5
推荐指数
1
解决办法
6879
查看次数

将注释应用于从@MappedSuperclass继承的字段

具有:

@MappedSuperclass
class Superclass {

    @Id
    @Column(name = "id")
    protected long id;

    @Column(name="field")
    private long field;

}
Run Code Online (Sandbox Code Playgroud)

@Entity
class Subclass extends Superclass {

}
Run Code Online (Sandbox Code Playgroud)

如何使用@GeneratedValue注释继承的id,使用@Index在Subclass中注释?

java inheritance annotations jpa mappedsuperclass

4
推荐指数
1
解决办法
5903
查看次数

@MappedSuperclass和@OneToMany

UML图

我需要从Country到Superclass Place(@MappedSuperclass)的OneToMany关联.它可以是双向的.我需要像@OneToAny这样的东西......

@MappedSuperclass
public class Place {

private String name;
private Country country;

@Column
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@ManyToOne
@JoinColumn(name="country_id")
public Country getCountry() {
    return country;
}

public void setCountry(Country country) {
    this.country = country;
}
}
Run Code Online (Sandbox Code Playgroud)

国家:

@Entity
   public class Country {
   private long id;
   private String name;
   private List<Place> places;

   @Any(metaColumn = @Column(name = "place_type"), fetch = FetchType.EAGER)
   @AnyMetaDef(idType = "integer", metaType = "string", metaValues …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate one-to-many mappedsuperclass

4
推荐指数
1
解决办法
6367
查看次数

带有@MappedSuperclass 的休眠 TABLE_PER_CLASS 不会创建 UNION 查询

我正在尝试创建一系列对象,这些对象都存储在单独的表中,但是所有这些表上都有一组共同的字段。我希望 Hibernate 对所有这些表进行联合,但不包括超类作为表。

当我只用 @MappedSuperclass @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 注释超类时

...hibernate 将为超类的 (n) 个子类型分别运行 (n) 个查询。

当我删除@MappedSuperclass 并将@Entity 放在超类上时,Hibernate 将执行花哨的 UNION 查询,但将超类作为表包含在 UNION 中(超类没有表)。

如何在不使父类成为@Entity(因为它不是实体,因此没有表)的情况下将所有子类(不是单独的查询)一起使用 UNION?

union annotations hibernate table-per-class mappedsuperclass

4
推荐指数
1
解决办法
2321
查看次数

JPA @MappedSuperclass在Eclipse中的单独JAR中

我有一个@MappedSuperclass AbstractEntity,我用于所有@Entity类.只要超类与我的实体在同一个Eclipse项目中,它就可以完美地工作.但是因为我在几个项目中重用了这个超类,所以我只想把它分解成自己的JAR文件.当我这样做(当然我将JAR文件添加到构建路径中)时,Eclipse会在我的每个@Entity类上给出错误:

实体没有定义主键属性.

Eclipse突出显示@Entity注释作为错误的来源.当然,所有类都继承自此AbstractEntity.两个项目中的包名称相同.JAR项目具有所有必需的构建路径 - 包含AbstractEntity的JAR文件项目中没有错误.

当我将它部署到我的应用服务器(JBoss 7.1)时,它工作正常.这让我觉得它只是一个错误地识别错误的Eclipse问题.

抽象实体:

package com.xyc.abc;

import java.io.Serializable;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class AbstractEntity implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)

简单实体类示例:

 @Entity
 public class TestEntity extends AbstractEntity {
 ...
 }
Run Code Online (Sandbox Code Playgroud)

我已经看到一些其他帖子说问题可能是超类中的注释是在getter而不是在字段上 - 如果你的实体中没有其他JPA注释,这只是一个问题,我这样做.有任何想法吗?

java eclipse entity jpa mappedsuperclass

4
推荐指数
1
解决办法
3870
查看次数

Hibernate继承与不同的主键

我正在尝试使用TABLE_PER_CLASS策略创建继承,但我想为每个表创建不同的主键是否可能?

我有一个类Register,它有数百万个实例,其中一些实例是"特殊的",并且对于它们的列和额外的列有不同的规则.

@MappedSuperclass

public abstract class Register {


    @Id
    @Column(nullable = false, unique = true, updatable = false)
    private Long userId;


    private Date checked;

    @Column(nullable = false)
    private RegisterState tipo;
}


@Entity
@AttributeOverrides({ @AttributeOverride(name = "userId", column = @Column(nullable = false, unique = false, updatable = false)) })
public class PotencialRegister extends Register implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;


    @Column(length = 64, nullable = false, unique = false)
    private String referer;
}
Run Code Online (Sandbox Code Playgroud)

对于基本注册我不需要一个Id属性,因为我有一个独特的列,但该列不是唯一的专业机构,所以我增加了一个额外的属性.

问题是hibernate使用父id创建了一个复合主键(生成的模式是):

create table …
Run Code Online (Sandbox Code Playgroud)

java inheritance hibernate table-per-class mappedsuperclass

4
推荐指数
1
解决办法
857
查看次数

我可以在接口上使用 @MappedSuperclass 注释吗?

我想在一个组共同映射interface,但我不能使用abstract superclass,因为我已经实体扩展另一个class。所以我需要一个像下面这样的界面:

@MappedSuperclass
public interface NamedEntity {
    @Column(name = "name")
    String getName();
    void setName(String name);
}
Run Code Online (Sandbox Code Playgroud)

我想像下面这样使用它:

public class Person {
    private Long id;
    private String name;
    public Long getId(){ return id; }
    public void setId(Long id){ this.id = id; }
    public String getName() { return name; }
    public void setName(String name){ this.name = name; }
}

@Entity
@Table(name = "person_entity")
public class PersonEntity extends Person implements NamedEntity {
    @Id
    @GeneratedValue
    @Column(name = "id") …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa mappedsuperclass

4
推荐指数
1
解决办法
1814
查看次数