标签: composite-key

Cassandra Spring Data 不允许我直接通过复合主键查询数据

我正在尝试使用复合主键类使用 Spring Data Cassandra。但是当我尝试查询数据时出现异常:

org.springframework.data.repository.query.QueryCreationException: **Could not create query for public abstract java.util.List com.amdocs.cassandrapoc.repository.ServiceRepository.findByKey(com.amdocs.cassandrapoc.entities.Key)! Reason: Cannot use composite primary key directly. Reference a property of the composite primary key**
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@PrimaryKeyClass
public class Key implements Serializable {

   @PrimaryKeyColumn(name = "id", ordinal = 0, type = 
      PrimaryKeyType.PARTITIONED)
   @CassandraType(type = DataType.Name.UUID)
      private UUID id;
   @PrimaryKeyColumn(name = "tenant", ordinal = 1, type = 
      PrimaryKeyType.PARTITIONED)
   @CassandraType(type = DataType.Name.TEXT)
      private String tenant;
  (Equals, hashcode, getters, setters omitted)
}

Table(value = "service")
public class Service implements …
Run Code Online (Sandbox Code Playgroud)

java composite-key cassandra spring-data spring-data-cassandra

3
推荐指数
2
解决办法
4721
查看次数

Hibernate 复合键和重叠字段 - 如何避免列重复

我面临一个关于如何管理特定模型的映射的问题。

这是一个多租户应用,我们已经选择了在每个实体中都包含“tenant_id”,所以我们不必每次需要获取实体时都进行联合(实际上,这就是我问题的根源……)。

模型如下:

+--------------------+   +---------------+
|        Book        |   |    Author     |
+--------------------+   +---------------+
| id (pk)            |   | id (pk)       |
| tenant_id (pk)(fk) |   | tenant_id (pk |
| author_id (fk)     |   | name          |
| title              |   +---------------+
+--------------------+
Run Code Online (Sandbox Code Playgroud)

如您所见,tenant-id 位于每个实体中,并且是主键的一部分。我们使用@IdClass 来管理复合键。这是代码:

+--------------------+   +---------------+
|        Book        |   |    Author     |
+--------------------+   +---------------+
| id (pk)            |   | id (pk)       |
| tenant_id (pk)(fk) |   | tenant_id (pk |
| author_id (fk)     |   | name          |
| title              | …
Run Code Online (Sandbox Code Playgroud)

java hibernate composite-key multi-tenant

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

如何在 spring data - jpa -hibernate 中使用复合键进行 findby ?@EmbeddedId

@Embeddable
public class AccountTransactionId implements Serializable {
    private String trxDate;
    private String acctNo;
    private int trxNo;
}

@Entity
public class Transaction {
    @EmbeddedId
    private AccountTransactionId accountTransactionId;

    private int amt;
    private int fee;
    private String cancelYn;
}
Run Code Online (Sandbox Code Playgroud)

这是我的存储库。如何制作find方法?我对此一无所知

List<Map<String, Object>> findByAccountTransactionId_trxDate(String trxDate);
Run Code Online (Sandbox Code Playgroud)

我尝试了“findByAccountTransactionId_trxDate”、“findByAccountTransactionIdTrxDate”、“findByIdTrxDate”...

hibernate jpa composite-key embeddable spring-data

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

nHibernate - 存储过程和复合键

我正在尝试使用nHibernate将存储过程的输出映射到项目中的对象.

该对象是这样的:

public class NewContentSearchResult
{
    public string Name { get; set; }
    public string ContentType { get; set; }
    public int Count { get; set; }
    public int CMIId { get; set; }
    public int FeatureId { get; set; }

    public override bool Equals(object obj)
    {
        return base.Equals(obj);
    }

    public override int GetHashCode()
    {
        return base.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且映射看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Class.Assembly"
    namespace="Class.Assembly"
    default-lazy="false" default-cascade="none">
  <class name="NewContentSearchResult" mutable="false" check="none">
    <composite-id unsaved-value="none">
      <key-property name="CMIId" type="int" /> …
Run Code Online (Sandbox Code Playgroud)

nhibernate stored-procedures composite-key

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

nHibernate复合键类类型不匹配

我有一个带有复合键的遗留表,映射到其他3个表,因为这个表中有其他属性,因为它不是一个简单的映射表,我不能使用多对多集映射来映射这个.

以下是我所做的:

<class name="classA" table="A">
<composite-id name="ID" class="AKey">
  <key-many-to-one name="Id_one" class="One" column="Id_one" />
  <key-many-to-one name="Id_two" class="Two" column="Id_two" />
  <key-many-to-one name="Id_three" class="Three" column="Id_three" />
</composite-id>
Run Code Online (Sandbox Code Playgroud)

AKey只是一个包含三个id的结构,Id_one,Id_two和Id_three都在各自的类中定义为int.

public struct Akey {
    public int Id_one { get; set; }
    public int Id_two { get; set; }
    public int Id_three { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这编译很好,但是当我尝试运行它时,它会给我一个错误信息:

NHibernate.QueryException:NHibernate.Criterion.SimpleExpression中的类型不匹配:ID期望类型AKey,实际类型System.Int32

请告知我做错了什么或错过了什么.

谢谢你!

nhibernate composite-key

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

是否有Linq操作来确定集合中是否存在具有相同属性值的项目?

C#:我有一组对象.T有2个属性.属性A和属性B.此集合需要遵守的规则是A和B的值组合在集合中必须是唯一的.换句话说,A和B需要用作复合主键.

在Linq有一个操作我可以用来检查这种情况吗?我希望它会像

if (items.Select(x => x.Name).Distinct().Count() != items.Select(x => x.Name).Count())
Run Code Online (Sandbox Code Playgroud)

上面的陈述是我如何检查集合中是否有重复名称的项目,但我不知道如何为多个属性执行此操作.

c# linq anonymous-types composite-key

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

why must a primary key be minimal?

A primary key is an attribute or set of attributes that uniquely identifies a row in a table. But a primary key has not only to be unique, but also minimal. Why is that necessary?

database primary-key composite-key composite-primary-key

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

复合键字段的最佳顺序是什么?

假设我有一个包含以下字段的表:

  • LeagueID
  • MatchID
  • 一些数据

联盟将举办许多比赛.通常每个联盟都将使用自己的本地数据库,因此LeagueID字段在此本地数据库的所有记录中都是相同的.联盟每年一次将其数据上传到国家当局,然后联盟ID将有必要对具有相同MatchID的比赛进行识别.

实现复合主键的最佳方法是什么(使用EF Fluent API)?

Entity<Match>.HasKey(match=>new {match.LeagueID,match.MatchID})
Run Code Online (Sandbox Code Playgroud)

要么

Entity<Match>.HasKey(match=>new {match.MatchID,match.LeagueID})
Run Code Online (Sandbox Code Playgroud)

对于人眼来说,联盟 - 比赛的顺序是合乎逻辑的,因为它将把特定联盟的比赛保持在一起.但我明白,在编写复合键时,出于性能原因首先使用最具辨别力的字段非常重要.

database-design entity-framework composite-key entity-framework-5

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

使用EF 4.5 Code First的复合键的MVC脚手架错误

我试图弄清楚如何使MVC脚手架使用复合/复合键.

我有下表:

public class Data
{
    [Key, Column(Order = 0)]
    [ForeignKey("Note")]
    [Display(Name = "Note id")]
    public int NoteId { get; set; }

    [Key, Column(Order = 1)]
    [ForeignKey("Member")]
    [Display(Name = "Member id")]
    public int MemberId { get; set; }

    [Display(Name = "Description")]
    public string Description { get; set; }

    [Display(Name = "Note")]
    public virtual Note Note { get; set; }

    [Display(Name = "Member")]
    public virtual Member Member { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我执行脚手架的行时:

Scaffold Controller Data -Repository
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Get-PrimaryKey : Cannot …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework scaffolding composite-key ef-code-first

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

实体框架关键问题

我尝试登录时遇到以下错误:

Project.Model.Identity.UserLogin :: EntityType'UserLogin'没有定义键.定义此EntityType的键.UserLogins:EntityType:EntitySet'UserLogins'基于没有定义键的'UserLogin'类型.

我试图在我的dbcontext中使用复合键

  // Primary Key
  this.HasKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId });
Run Code Online (Sandbox Code Playgroud)

但它似乎无法选择它,看起来它正在搜索模型中的键而不是在上下文中,因为当我在模型中添加"[Key]"关键字时,它抱怨必须使用HasKey复合键

public partial class UserLogin
{
    [Key]
    public string LoginProvider { get; set; }
    [Key]
    public string ProviderKey { get; set; }
    [Key]
    public string UserId { get; set; }
    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我如何通过这个?我是否在模型中添加了HasKey,如果是这样,为什么不在上下文中添加它?

c# entity-framework composite-key

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